/*
 * Auto generated C++ header for Mass Effect 2.
 *	by _silencer.
 */

#ifndef UNREAL_SDK_GAME_Engine_H
#define UNREAL_SDK_GAME_Engine_H

#include "unreal_game_global.h"

namespace game
{
	using namespace unreal;

	class BioGlobalObjectContainer: public Object
	{
		DECLARE_PACKAGE_CLASS( BioGlobalObjectContainer, Object, Engine )

	public:

		Name PackageName; //offset = 60, size = 8
		Package* LoadedPackage; //offset = 68, size = 4
		Array<Object*> LoadedObjects; //offset = 72, size = 12
	};

	enum ETransitionType
	{
		TT_None,
		TT_Paused,
		TT_Loading,
		TT_Saving,
	};

	enum EBioUnTexCompressSetting
	{
		BioTCS_NvDXT,
		BioTCS_NvTT_NoCuda,
	};

	struct DropNoteInfo
	{
		Vector Location; //offset = 0, size = 12
		Rotator Rotation; //offset = 12, size = 12
		String Comment; //offset = 24, size = 12
	};

	struct BioLayerDetails
	{
		String Prefix; //offset = 0, size = 12
		String Suffix; //offset = 12, size = 12
		String Description; //offset = 24, size = 12
		Color Color; //offset = 36, size = 4
		Bool ForceBlockOnLoad: 1; //offset = 40, size = 4
	};

	class Engine: public Subsystem
	{
		DECLARE_PACKAGE_CLASS( Engine, Subsystem, Engine )

	public:

		Font* TinyFont; //offset = 64, size = 4
		String TinyFontName; //offset = 68, size = 12
		Font* SmallFont; //offset = 80, size = 4
		String SmallFontName; //offset = 84, size = 12
		Font* MediumFont; //offset = 96, size = 4
		String MediumFontName; //offset = 100, size = 12
		Font* LargeFont; //offset = 112, size = 4
		String LargeFontName; //offset = 116, size = 12
		Array<Font*> AdditionalFonts; //offset = 128, size = 12
		Array<String> AdditionalFontNames; //offset = 140, size = 12
		Class* ConsoleClass; //offset = 152, size = 4
		String ConsoleClassName; //offset = 156, size = 12
		Class* GameViewportClientClass; //offset = 168, size = 4
		String GameViewportClientClassName; //offset = 172, size = 12
		Class* DataStoreClientClass; //offset = 184, size = 4
		String DataStoreClientClassName; //offset = 188, size = 12
		Class* LocalPlayerClass; //offset = 200, size = 4
		String LocalPlayerClassName; //offset = 204, size = 12
		Material* DefaultMaterial; //offset = 216, size = 4
		String DefaultMaterialName; //offset = 220, size = 12
		Material* WireframeMaterial; //offset = 232, size = 4
		String WireframeMaterialName; //offset = 236, size = 12
		Material* EmissiveTexturedMaterial; //offset = 248, size = 4
		String EmissiveTexturedMaterialName; //offset = 252, size = 12
		Material* GeomMaterial; //offset = 264, size = 4
		String GeomMaterialName; //offset = 268, size = 12
		Material* DefaultFogVolumeMaterial; //offset = 280, size = 4
		String DefaultFogVolumeMaterialName; //offset = 284, size = 12
		Material* TickMaterial; //offset = 296, size = 4
		String TickMaterialName; //offset = 300, size = 12
		Material* CrossMaterial; //offset = 312, size = 4
		String CrossMaterialName; //offset = 316, size = 12
		Material* VisColorationMaterialInChunk; //offset = 328, size = 4
		String VisColorationMaterialInChunkName; //offset = 332, size = 12
		Material* VisColorationMaterialLoadChunk; //offset = 344, size = 4
		String VisColorationMaterialLoadChunkName; //offset = 348, size = 12
		Material* VisColorationMaterialVisibleChunk; //offset = 360, size = 4
		String VisColorationMaterialVisibleChunkName; //offset = 364, size = 12
		Material* VisColorationMaterialMasterMap; //offset = 376, size = 4
		String VisColorationMaterialMasterMapName; //offset = 380, size = 12
		Material* VisColorationMaterialUnloaded; //offset = 392, size = 4
		String VisColorationMaterialUnloadedName; //offset = 396, size = 12
		Material* BioColorChunkMaterial; //offset = 408, size = 4
		String BioColorChunkMaterialName; //offset = 412, size = 12
		Material* BioTranslucentVolumeMaterial; //offset = 424, size = 4
		String BioTranslucentVolumeMaterialName; //offset = 428, size = 12
		Byte BioUnTexCompressSetting; //offset = 440, size = 1
		Byte TransitionType; //offset = 441, size = 1
		Material* LevelColorationLitMaterial; //offset = 444, size = 4
		String LevelColorationLitMaterialName; //offset = 448, size = 12
		Material* LevelColorationUnlitMaterial; //offset = 460, size = 4
		String LevelColorationUnlitMaterialName; //offset = 464, size = 12
		Material* RemoveSurfaceMaterial; //offset = 476, size = 4
		String RemoveSurfaceMaterialName; //offset = 480, size = 12
		Array<Color> LightComplexityColors; //offset = 492, size = 12
		Array<Color> ShaderComplexityColors; //offset = 504, size = 12
		Bool bUsePixelShaderComplexity: 1; //offset = 516, size = 4
		Bool bUseAdditiveComplexity: 1; //offset = 516, size = 4
		Bool bUseSound: 1; //offset = 516, size = 4
		Bool bUseTextureStreaming: 1; //offset = 516, size = 4
		Bool bUseBackgroundLevelStreaming: 1; //offset = 516, size = 4
		Bool bSubtitlesEnabled: 1; //offset = 516, size = 4
		Bool bSubtitlesForcedOff: 1; //offset = 516, size = 4
		Bool bForceStaticTerrain: 1; //offset = 516, size = 4
		Bool DisplayLazyLoadErrors: 1; //offset = 516, size = 4
		Bool m_bSaveInitialized: 1; //offset = 516, size = 4
		Bool bForceCPUSkinning: 1; //offset = 516, size = 4
		Bool bUsePostProcessEffects: 1; //offset = 516, size = 4
		Bool bOnScreenKismetWarnings: 1; //offset = 516, size = 4
		Bool bEnableKismetLogging: 1; //offset = 516, size = 4
		Bool bAllowMatureLanguage: 1; //offset = 516, size = 4
		Bool bEnableVSMShadows: 1; //offset = 516, size = 4
		Bool bEnableBranchingPCFShadows: 1; //offset = 516, size = 4
		Bool bAllowBetterModulatedShadows: 1; //offset = 516, size = 4
		Bool bRenderTerrainCollisionAsOverlay: 1; //offset = 516, size = 4
		Bool bDisablePhysXHardwareSupport: 1; //offset = 516, size = 4
		Bool bPauseOnLossOfFocus: 1; //offset = 516, size = 4
		Bool bEnableColorClear: 1; //offset = 516, size = 4
		Float MaxPixelShaderAdditiveComplexityCount; //offset = 520, size = 4
		Float MaxPixelShaderOpaqueComplexityCount; //offset = 524, size = 4
		Float MaxVertexShaderComplexityCount; //offset = 528, size = 4
		Float MinTextureDensity; //offset = 532, size = 4
		Float IdealTextureDensity; //offset = 536, size = 4
		Float MaxTextureDensity; //offset = 540, size = 4
		Material* EditorBrushMaterial; //offset = 544, size = 4
		String EditorBrushMaterialName; //offset = 548, size = 12
		PhysicalMaterial* DefaultPhysMaterial; //offset = 560, size = 4
		String DefaultPhysMaterialName; //offset = 564, size = 12
		Material* TerrainErrorMaterial; //offset = 576, size = 4
		String TerrainErrorMaterialName; //offset = 580, size = 12
		Int TerrainMaterialMaxTextureCount; //offset = 592, size = 4
		Int TerrainTessellationCheckCount; //offset = 596, size = 4
		Float TerrainTessellationCheckDistance; //offset = 600, size = 4
		Class* OnlineSubsystemClass; //offset = 604, size = 4
		String DefaultOnlineSubsystemName; //offset = 608, size = 12
		PostProcessChain* DefaultPostProcess; //offset = 620, size = 4
		String DefaultPostProcessName; //offset = 624, size = 12
		PostProcessChain* ThumbnailSkeletalMeshPostProcess; //offset = 636, size = 4
		String ThumbnailSkeletalMeshPostProcessName; //offset = 640, size = 12
		PostProcessChain* ThumbnailParticleSystemPostProcess; //offset = 652, size = 4
		String ThumbnailParticleSystemPostProcessName; //offset = 656, size = 12
		PostProcessChain* ThumbnailMaterialPostProcess; //offset = 668, size = 4
		String ThumbnailMaterialPostProcessName; //offset = 672, size = 12
		PostProcessChain* DefaultUIScenePostProcess; //offset = 684, size = 4
		String DefaultUIScenePostProcessName; //offset = 688, size = 12
		Material* DefaultUICaretMaterial; //offset = 700, size = 4
		String DefaultUICaretMaterialName; //offset = 704, size = 12
		Material* SceneCaptureReflectActorMaterial; //offset = 716, size = 4
		String SceneCaptureReflectActorMaterialName; //offset = 720, size = 12
		Material* SceneCaptureCubeActorMaterial; //offset = 732, size = 4
		String SceneCaptureCubeActorMaterialName; //offset = 736, size = 12
		Texture2D* RandomAngleTexture; //offset = 748, size = 4
		String RandomAngleTextureName; //offset = 752, size = 12
		Float TimeBetweenPurgingPendingKillObjects; //offset = 764, size = 4
		Client* Client; //offset = 768, size = 4
		Array<LocalPlayer*> GamePlayers; //offset = 772, size = 12
		GameViewportClient* GameViewport; //offset = 784, size = 4
		Array<String> DeferredCommands; //offset = 788, size = 12
		Array<String> NextFrameDeferredCommands; //offset = 800, size = 12
		Int TickCycles; //offset = 812, size = 4
		Int GameCycles; //offset = 816, size = 4
		Int ClientCycles; //offset = 820, size = 4
		DebugManager* DebugManager; //offset = 824, size = 4
		Pointer RemoteControlExec; //offset = 828, size = 4
		Color C_WorldBox; //offset = 832, size = 4
		Color C_BrushWire; //offset = 836, size = 4
		Color C_AddWire; //offset = 840, size = 4
		Color C_SubtractWire; //offset = 844, size = 4
		Color C_SemiSolidWire; //offset = 848, size = 4
		Color C_NonSolidWire; //offset = 852, size = 4
		Color C_WireBackground; //offset = 856, size = 4
		Color C_ScaleBoxHi; //offset = 860, size = 4
		Color C_VolumeCollision; //offset = 864, size = 4
		Color C_BSPCollision; //offset = 868, size = 4
		Color C_OrthoBackground; //offset = 872, size = 4
		Color C_Volume; //offset = 876, size = 4
		Float StreamingDistanceFactor; //offset = 880, size = 4
		String ScoutClassName; //offset = 884, size = 12
		Array<BioLayerDetails> m_BioLayerDetails; //offset = 896, size = 12
		String TransitionDescription; //offset = 908, size = 12
		String TransitionGameType; //offset = 920, size = 12
		Float MeshLODRange; //offset = 932, size = 4
		Float ShadowFilterRadius; //offset = 936, size = 4
		Float DepthBias; //offset = 940, size = 4
		Float ModShadowFadeDistanceExponent; //offset = 944, size = 4
		Float CameraFOVThreshold; //offset = 948, size = 4
		Float CameraRotationThreshold; //offset = 952, size = 4
		Float CameraTranslationThreshold; //offset = 956, size = 4
		Float PrimitiveProbablyVisibleTime; //offset = 960, size = 4
		Float PercentUnoccludedRequeries; //offset = 964, size = 4
		Float ShadowVolumeLightRadiusThreshold; //offset = 968, size = 4
		Float ShadowVolumePrimitiveScreenSpacePercentageThreshold; //offset = 972, size = 4
		Int MaxParticleResize; //offset = 976, size = 4
		Int MaxParticleResizeWarn; //offset = 980, size = 4
		Material* TerrainCollisionMaterial; //offset = 984, size = 4
		String TerrainCollisionMaterialName; //offset = 988, size = 12
		Int BeginUPTryCount; //offset = 1000, size = 4
		Array<DropNoteInfo> PendingDroppedNotes; //offset = 1004, size = 12
		String DynamicCoverMeshComponentName; //offset = 1016, size = 12
		Float NetClientTicksPerSecond; //offset = 1028, size = 4
		Float LensFlareMaxOcclusionIncrement; //offset = 1032, size = 4
		Float LensFlareOcclusionStepSize; //offset = 1036, size = 4
		BioTestFramework* m_pUnitTestFramework; //offset = 1040, size = 4

		void BioShowDebugMessageBox( String sMessage );
		void AddOverlayWrapped( Font* Font, String Text, Float X, Float Y, Float ScaleX, Float ScaleY, Float WrapWidth );
		void AddOverlay( Font* Font, String Text, Float X, Float Y, Float ScaleX, Float ScaleY, Bool bIsCentered );
		void RemoveAllOverlays();
		void StopMovie();
		Bool PlayLoadMapMovie();
		String GetLastMovieName();
		AudioDevice* GetAudioDevice();
		Bool IsSplitScreen();
		Font* GetAdditionalFont( Int AdditionalFontIndex );
		Font* GetLargeFont();
		Font* GetMediumFont();
		Font* GetSmallFont();
		Font* GetTinyFont();
		WorldInfo* GetCurrentWorldInfo();
		Bool IsShip();
	};

	enum EFullyLoadPackageType
	{
		FULLYLOAD_Map,
		FULLYLOAD_Game_PreLoadClass,
		FULLYLOAD_Game_PostLoadClass,
	};

	struct PerMapExclusionPackagesInfo
	{
		Name MapName; //offset = 0, size = 8
		Array<Name> PackagesToExclude; //offset = 8, size = 12
	};

	struct FullyLoadedPackagesInfo
	{
		Byte FullyLoadType; //offset = 0, size = 1
		String Tag; //offset = 4, size = 12
		Array<Name> PackagesToLoad; //offset = 16, size = 12
		Array<Object*> LoadedObjects; //offset = 28, size = 12
	};

	struct LevelStreamingStatus
	{
		Name PackageName; //offset = 0, size = 8
		Bool bShouldBeLoaded: 1; //offset = 8, size = 4
		Bool bShouldBeVisible: 1; //offset = 8, size = 4
	};

	struct URL
	{
		String Protocol; //offset = 0, size = 12
		String Host; //offset = 12, size = 12
		Int Port; //offset = 24, size = 4
		String Map; //offset = 28, size = 12
		Array<String> Op; //offset = 40, size = 12
		String Portal; //offset = 52, size = 12
		Int Valid; //offset = 64, size = 4
	};

	class GameEngine: public Engine
	{
		DECLARE_PACKAGE_CLASS( GameEngine, Engine, Engine )

	public:

		Bool m_bPlayLogoMovie: 1; //offset = 1044, size = 4
		Bool m_bIsLogoMovieInterruptable: 1; //offset = 1044, size = 4
		Bool bShouldCommitPendingMapChange: 1; //offset = 1044, size = 4
		Bool bShouldSkipLevelStartupEventOnMapCommit: 1; //offset = 1044, size = 4
		Bool bShouldSkipLevelBeginningEventOnMapCommit: 1; //offset = 1044, size = 4
		Bool bSmoothFrameRate: 1; //offset = 1044, size = 4
		Bool bClearAnimSetLinkupCachesOnLoadMap: 1; //offset = 1044, size = 4
		Bool m_bPlayedLogoMovie: 1; //offset = 1044, size = 4
		PendingLevel* GPendingLevel; //offset = 1048, size = 4
		URL LastURL; //offset = 1052, size = 68
		URL LastRemoteURL; //offset = 1120, size = 68
		Array<String> ServerActors; //offset = 1188, size = 12
		String TravelURL; //offset = 1200, size = 12
		Byte TravelType; //offset = 1212, size = 1
		OnlineSubsystem* OnlineSubsystem; //offset = 1216, size = 4
		Array<Name> LevelsToLoadForPendingMapChange; //offset = 1220, size = 12
		Array<Level*> LoadedLevelsForPendingMapChange; //offset = 1232, size = 12
		String PendingMapChangeFailureDescription; //offset = 1244, size = 12
		Float MaxSmoothedFrameRate; //offset = 1256, size = 4
		Float MinSmoothedFrameRate; //offset = 1260, size = 4
		Array<LevelStreamingStatus> PendingLevelStreamingStatusUpdates; //offset = 1264, size = 12
		Array<ObjectReferencer*> ObjectReferencers; //offset = 1276, size = 12
		Array<FullyLoadedPackagesInfo> PackagesToFullyLoad; //offset = 1288, size = 12
		Array<Name> DefaultPackagesToLoadPerMap; //offset = 1300, size = 12
		Array<PerMapExclusionPackagesInfo> PackagesToExcludePerMap; //offset = 1312, size = 12
		Array<BioGlobalObjectContainer*> GlobalPackagesLoaded; //offset = 1324, size = 12
		Int m_nSkipFrames; //offset = 1336, size = 4

		OnlineSubsystem* GetOnlineSubsystem();
		void SkipFrames( Int nFrames );
	};

	class DrawSoundRadiusComponent: public DrawSphereComponent
	{
		DECLARE_PACKAGE_CLASS( DrawSoundRadiusComponent, DrawSphereComponent, Engine )

	public:
	};

	struct AudioComponentParam
	{
		Name ParamName; //offset = 0, size = 8
		Float FloatParam; //offset = 8, size = 4
		SoundNodeWave* WaveParam; //offset = 12, size = 4
	};

	class AudioComponent: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( AudioComponent, ActorComponent, Engine )

	public:

		SoundCue* SoundCue; //offset = 88, size = 4
		SoundNode* CueFirstNode; //offset = 92, size = 4
		Array<AudioComponentParam> InstanceParameters; //offset = 96, size = 12
		Bool bUseOwnerLocation: 1; //offset = 108, size = 4
		Bool bAutoPlay: 1; //offset = 108, size = 4
		Bool bAutoDestroy: 1; //offset = 108, size = 4
		Bool bStopWhenOwnerDestroyed: 1; //offset = 108, size = 4
		Bool bShouldRemainActiveIfDropped: 1; //offset = 108, size = 4
		Bool bWasOccluded: 1; //offset = 108, size = 4
		Bool bSuppressSubtitles: 1; //offset = 108, size = 4
		Bool bWasPlaying: 1; //offset = 108, size = 4
		Bool bApplyEffects: 1; //offset = 108, size = 4
		Bool bAlwaysPlay: 1; //offset = 108, size = 4
		Bool bAllowSpatialization: 1; //offset = 108, size = 4
		Bool bIsUISound: 1; //offset = 108, size = 4
		Bool bIsMusic: 1; //offset = 108, size = 4
		Bool bNoReverb: 1; //offset = 108, size = 4
		Bool bFinished: 1; //offset = 108, size = 4
		Bool bIgnoreForFlushing: 1; //offset = 108, size = 4
		Array<Pointer> WaveInstances; //offset = 112, size = 12
		Array<Byte> SoundNodeData; //offset = 124, size = 12
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> SoundNodeOffsetMap; //offset = 136, size = 20
		MultiMap_Mirror SoundNodeResetWaveMap; //offset = 156, size = 20
		Pointer Listener; //offset = 176, size = 4
		Float PlaybackTime; //offset = 180, size = 4
		PortalVolume* PortalVolume; //offset = 184, size = 4
		Vector Location; //offset = 188, size = 12
		Vector ComponentLocation; //offset = 200, size = 12
		Float SubtitlePriority; //offset = 212, size = 4
		Float FadeInStartTime; //offset = 216, size = 4
		Float FadeInStopTime; //offset = 220, size = 4
		Float FadeInTargetVolume; //offset = 224, size = 4
		Float FadeOutStartTime; //offset = 228, size = 4
		Float FadeOutStopTime; //offset = 232, size = 4
		Float FadeOutTargetVolume; //offset = 236, size = 4
		Float AdjustVolumeStartTime; //offset = 240, size = 4
		Float AdjustVolumeStopTime; //offset = 244, size = 4
		Float AdjustVolumeTargetVolume; //offset = 248, size = 4
		Float CurrAdjustVolumeTargetVolume; //offset = 252, size = 4
		SoundNode* CurrentNotifyBufferFinishedHook; //offset = 256, size = 4
		Vector CurrentLocation; //offset = 260, size = 12
		Float CurrentVolume; //offset = 272, size = 4
		Float CurrentPitch; //offset = 276, size = 4
		Float CurrentHighFrequencyGain; //offset = 280, size = 4
		Int CurrentUseSpatialization; //offset = 284, size = 4
		Int CurrentUseSeamlessLooping; //offset = 288, size = 4
		Float CurrentVolumeMultiplier; //offset = 292, size = 4
		Float CurrentPitchMultiplier; //offset = 296, size = 4
		Float CurrentVoiceCenterChannelVolume; //offset = 300, size = 4
		Float CurrentVoiceRadioVolume; //offset = 304, size = 4
		Float VolumeMultiplier; //offset = 308, size = 4
		Float PitchMultiplier; //offset = 312, size = 4
		Float OcclusionCheckInterval; //offset = 316, size = 4
		Float LastOcclusionCheckTime; //offset = 320, size = 4
		DrawSoundRadiusComponent* PreviewSoundRadius; //offset = 324, size = 4
		__OnAudioFinished__Delegate __OnAudioFinished__Delegate; //offset = 328, size = 12

		void OcclusionChanged( Bool bNowOccluded );
		void OnAudioFinished( AudioComponent* AC );
		void ResetToDefaults();
		void SetWaveParameter( Name InName, SoundNodeWave* InWave );
		void SetFloatParameter( Name InName, Float InFloat );
		void AdjustVolume( Float AdjustVolumeDuration, Float AdjustVolumeLevel );
		void FadeOut( Float FadeOutDuration, Float FadeVolumeLevel );
		void FadeIn( Float FadeInDuration, Float FadeVolumeLevel );
		Bool IsPlaying();
		void Stop();
		void Play();
	};

	const char* RB_Sleeping = 0x0;
	const char* RB_NeedsUpdate = 0x0;
	const char* RB_None = 0x0;
	const char* RBSTATE_ANGVELSCALE = 1000;
	const char* RBSTATE_LINVELSCALE = 10.;
	const char* ACTORMAXSTEPHEIGHT = 35.;
	const char* MINFLOORZ = 0.;
	const char* REP_RBLOCATION_ERROR_TOLERANCE_SQ = 16.;
	const char* TRACEFLAG_Blocking = 8;
	const char* TRACEFLAG_SkipMovers = 4;
	const char* TRACEFLAG_PhysicsVolumes = 2;
	const char* TRACEFLAG_Bullet = 1;

	enum EBioRadarType
	{
		BRT_None,
		BRT_Pawn_Friendly,
		BRT_Pawn_Neutral,
		BRT_Pawn_Hostile,
		BRT_Vehicle,
		BRT_Store,
		BRT_Destination,
		BRT_Plot,
		BRT_Mineral,
	};

	enum EDoubleClickDir
	{
		DCLICK_None,
		DCLICK_Left,
		DCLICK_Right,
		DCLICK_Forward,
	};

	enum ETravelType
	{
		TRAVEL_Absolute,
		TRAVEL_Partial,
	};

	enum ECollisionType
	{
		COLLIDE_CustomDefault,
		COLLIDE_NoCollision,
		COLLIDE_BlockAll,
		COLLIDE_BlockWeapons,
		COLLIDE_TouchAll,
	};

	enum ENetRole
	{
		ROLE_None,
		ROLE_SimulatedProxy,
		ROLE_AutonomousProxy,
	};

	enum EMoveDir
	{
		MD_Stationary,
		MD_Forward,
		MD_Backward,
		MD_Left,
	};

	enum EPhysics
	{
		PHYS_None,
		PHYS_Walking,
		PHYS_Falling,
		PHYS_Swimming,
		PHYS_Flying,
		PHYS_Rotating,
		PHYS_Projectile,
		PHYS_Interpolating,
	};

	struct NavReference
	{
		NavigationPoint* Nav; //offset = 0, size = 4
		Guid Guid; //offset = 4, size = 16
	};

	struct ReplicatedHitImpulse
	{
		Vector AppliedImpulse; //offset = 0, size = 12
		Vector HitLocation; //offset = 12, size = 12
		Name BoneName; //offset = 24, size = 8
		Byte ImpulseCount; //offset = 32, size = 1
		Bool bRadialImpulse: 1; //offset = 36, size = 4
	};

	struct AsyncLineCheckResult
	{
		Int bCheckStarted; //offset = 0, size = 4
		Int bCheckCompleted; //offset = 4, size = 4
		Int bHit; //offset = 8, size = 4
	};

	struct RigidBodyContactInfo
	{
		Vector ContactPosition; //offset = 0, size = 12
		Vector ContactNormal; //offset = 12, size = 12
		Float ContactPenetration; //offset = 24, size = 4
		Vector ContactVelocity[2]; //offset = 28, size = 12
		PhysicalMaterial* PhysMaterial[2]; //offset = 52, size = 4
	};

	struct CollisionImpactData
	{
		Array<RigidBodyContactInfo> ContactInfos; //offset = 0, size = 12
		Vector TotalNormalForceVector; //offset = 12, size = 12
		Vector TotalFrictionForceVector; //offset = 24, size = 12
	};

	struct RigidBodyState
	{
		Vector Position; //offset = 0, size = 12
		Quat Quaternion; //offset = 12, size = 16
		Vector LinVel; //offset = 28, size = 12
		Vector AngVel; //offset = 40, size = 12
		Byte bNewData; //offset = 52, size = 1
	};

	struct AnimSlotDesc
	{
		Name SlotName; //offset = 0, size = 8
		Int NumChannels; //offset = 8, size = 4
	};

	struct AnimSlotInfo
	{
		Name SlotName; //offset = 0, size = 8
		Array<Float> ChannelWeights; //offset = 8, size = 12
	};

	struct TraceHitInfo
	{
		Material* Material; //offset = 0, size = 4
		PhysicalMaterial* PhysMaterial; //offset = 4, size = 4
		Int Item; //offset = 8, size = 4
		Int LevelIndex; //offset = 12, size = 4
		Name BoneName; //offset = 16, size = 8
		PrimitiveComponent* HitComponent; //offset = 24, size = 4
	};

	struct ImpactInfo
	{
		Actor* HitActor; //offset = 0, size = 4
		Vector HitLocation; //offset = 4, size = 12
		Vector HitNormal; //offset = 16, size = 12
		Vector RayDir; //offset = 28, size = 12
		TraceHitInfo HitInfo; //offset = 40, size = 28
	};

	struct TimerData
	{
		Bool bLoop: 1; //offset = 0, size = 4
		Name FuncName; //offset = 4, size = 8
		Float Rate; //offset = 12, size = 4
		Float Count; //offset = 16, size = 4
		Object* TimerObj; //offset = 20, size = 4
	};

	class Actor: public Object
	{
		DECLARE_PACKAGE_CLASS( Actor, Object, Engine )

	public:

		Array<ActorComponent*> Components; //offset = 60, size = 12
		Array<SFXModule*> Modules; //offset = 72, size = 12
		BioBaseComponent* ActorType; //offset = 84, size = 4
		BioBaseComponent* oBioComponent; //offset = 88, size = 4
		Array<ActorComponent*> AllComponents; //offset = 92, size = 12
		RenderCommandFence DetachFence; //offset = 104, size = 4
		Float CustomTimeDilation; //offset = 108, size = 4
		Array<Texture2D*> PrimedTextures; //offset = 112, size = 12
		Byte Physics; //offset = 124, size = 1
		Byte RemoteRole; //offset = 125, size = 1
		Byte Role; //offset = 126, size = 1
		Byte RenderGroupHint; //offset = 127, size = 1
		Byte TickGroup; //offset = 128, size = 1
		Byte m_eRadarType; //offset = 129, size = 1
		Actor* Owner; //offset = 132, size = 4
		Actor* Base; //offset = 136, size = 4
		Array<TimerData> Timers; //offset = 140, size = 12
		Bool bStatic: 1; //offset = 152, size = 4
		Bool bHidden: 1; //offset = 152, size = 4
		Bool bNoDelete: 1; //offset = 152, size = 4
		Bool bDeleteMe: 1; //offset = 152, size = 4
		Bool bOnlyOwnerSee: 1; //offset = 152, size = 4
		Bool bWorldGeometry: 1; //offset = 152, size = 4
		Bool bIgnoreRigidBodyPawns: 1; //offset = 152, size = 4
		Bool bOrientOnSlope: 1; //offset = 152, size = 4
		Bool bIgnoreEncroachers: 1; //offset = 152, size = 4
		Bool bPushedByEncroachers: 1; //offset = 152, size = 4
		Bool bDestroyedByInterpActor: 1; //offset = 152, size = 4
		Bool bRouteBeginPlayEvenIfStatic: 1; //offset = 152, size = 4
		Bool bIsMoving: 1; //offset = 152, size = 4
		Bool bAlwaysEncroachCheck: 1; //offset = 152, size = 4
		Bool bHasAlternateTargetLocation: 1; //offset = 152, size = 4
		Bool bNetTemporary: 1; //offset = 152, size = 4
		Bool bOnlyRelevantToOwner: 1; //offset = 152, size = 4
		Bool bAlwaysRelevant: 1; //offset = 152, size = 4
		Bool bReplicateInstigator: 1; //offset = 152, size = 4
		Bool bReplicateMovement: 1; //offset = 152, size = 4
		Bool bSkipActorPropertyReplication: 1; //offset = 152, size = 4
		Bool bUpdateSimulatedPosition: 1; //offset = 152, size = 4
		Bool bTearOff: 1; //offset = 152, size = 4
		Bool bOnlyDirtyReplication: 1; //offset = 152, size = 4
		Bool bDemoOwner: 1; //offset = 152, size = 4
		Bool bNetInitialRotation: 1; //offset = 152, size = 4
		Bool bReplicateRigidBodyLocation: 1; //offset = 152, size = 4
		Bool bKillDuringLevelTransition: 1; //offset = 152, size = 4
		Bool bExchangedRoles: 1; //offset = 152, size = 4
		Bool bConsiderAllStaticMeshComponentsForStreaming: 1; //offset = 152, size = 4
		Bool bDebug: 1; //offset = 152, size = 4
		Bool bPostRenderIfNotVisible: 1; //offset = 152, size = 4
		Bool bHardAttach: 1; //offset = 156, size = 4
		Bool bIgnoreBaseRotation: 1; //offset = 156, size = 4
		Bool bShadowParented: 1; //offset = 156, size = 4
		Bool bCanBeAdheredTo: 1; //offset = 156, size = 4
		Bool bCanBeFrictionedTo: 1; //offset = 156, size = 4
		Bool bBioSnapToBase: 1; //offset = 156, size = 4
		Bool m_bBioBoneDependsOnBaseSkel: 1; //offset = 156, size = 4
		Bool bHurtEntry: 1; //offset = 156, size = 4
		Bool bGameRelevant: 1; //offset = 156, size = 4
		Bool bMovable: 1; //offset = 156, size = 4
		Bool bDestroyInPainVolume: 1; //offset = 156, size = 4
		Bool bCanBeDamaged: 1; //offset = 156, size = 4
		Bool bShouldBaseAtStartup: 1; //offset = 156, size = 4
		Bool bPendingDelete: 1; //offset = 156, size = 4
		Bool bCanTeleport: 1; //offset = 156, size = 4
		Bool bAlwaysTick: 1; //offset = 156, size = 4
		Bool bBlocksNavigation: 1; //offset = 156, size = 4
		Bool bCollideWhenPlacing: 1; //offset = 156, size = 4
		Bool bCollideActors: 1; //offset = 156, size = 4
		Bool bCollideWorld: 1; //offset = 156, size = 4
		Bool bCollideComplex: 1; //offset = 156, size = 4
		Bool bBlockActors: 1; //offset = 156, size = 4
		Bool bProjTarget: 1; //offset = 156, size = 4
		Bool bBlocksTeleport: 1; //offset = 156, size = 4
		Bool bNoEncroachCheck: 1; //offset = 156, size = 4
		Bool bPhysRigidBodyOutOfWorldCheck: 1; //offset = 156, size = 4
		Bool bComponentOutsideWorld: 1; //offset = 156, size = 4
		Bool bBounce: 1; //offset = 156, size = 4
		Bool bJustTeleported: 1; //offset = 156, size = 4
		Bool bNetInitial: 1; //offset = 156, size = 4
		Bool bNetOwner: 1; //offset = 156, size = 4
		Bool bHiddenEd: 1; //offset = 156, size = 4
		Bool bHiddenEdGroup: 1; //offset = 160, size = 4
		Bool bHiddenEdCustom: 1; //offset = 160, size = 4
		Bool bEdShouldSnap: 1; //offset = 160, size = 4
		Bool bPathColliding: 1; //offset = 160, size = 4
		Bool bScriptInitialized: 1; //offset = 160, size = 4
		Bool bLockLocation: 1; //offset = 160, size = 4
		Bool bTickDuringPlayersOnly: 1; //offset = 160, size = 4
		Bool bNoTick: 1; //offset = 160, size = 4
		Bool m_bCombatStasis: 1; //offset = 160, size = 4
		Bool m_bRadarDisabled: 1; //offset = 160, size = 4
		Bool m_bWasInVehicleTransition: 1; //offset = 160, size = 4
		Bool m_bAlwaysCollide: 1; //offset = 160, size = 4
		Bool OverridePhysMat: 1; //offset = 160, size = 4
		Bool bTicked: 1; //offset = 160, size = 4
		Bool bStasis: 1; //offset = 160, size = 4
		Bool bNetDirty: 1; //offset = 160, size = 4
		Bool bDemoRecording: 1; //offset = 160, size = 4
		Bool bForceNetUpdate: 1; //offset = 160, size = 4
		Bool bPendingNetUpdate: 1; //offset = 160, size = 4
		Bool BlockRigidBody: 1; //offset = 160, size = 4
		Bool m_bIsChangingCollision: 1; //offset = 160, size = 4
		Bool bTempEditor: 1; //offset = 160, size = 4
		Bool bPathTemp: 1; //offset = 160, size = 4
		Int NetTag; //offset = 164, size = 4
		Float NetUpdateTime; //offset = 168, size = 4
		Float NetUpdateFrequency; //offset = 172, size = 4
		Float NetPriority; //offset = 176, size = 4
		Float LastNetUpdateTime; //offset = 180, size = 4
		Pawn* Instigator; //offset = 184, size = 4
		WorldInfo* WorldInfo; //offset = 188, size = 4
		Float LifeSpan; //offset = 192, size = 4
		Float CreationTime; //offset = 196, size = 4
		Float LastRenderTime; //offset = 200, size = 4
		Name Tag; //offset = 204, size = 8
		Name UniqueTag; //offset = 212, size = 8
		Name InitialState; //offset = 220, size = 8
		Name Group; //offset = 228, size = 8
		Array<Actor*> Touching; //offset = 236, size = 12
		Array<Actor*> Children; //offset = 248, size = 12
		Float LatentFloat; //offset = 260, size = 4
		AnimNodeSequence* LatentSeqNode; //offset = 264, size = 4
		PhysicsVolume* PhysicsVolume; //offset = 268, size = 4
		Vector Location; //offset = 272, size = 12
		Rotator Rotation; //offset = 284, size = 12
		Vector Velocity; //offset = 296, size = 12
		Vector Acceleration; //offset = 308, size = 12
		SkeletalMeshComponent* BaseSkelComponent; //offset = 320, size = 4
		Name BaseBoneName; //offset = 324, size = 8
		Array<Actor*> Attached; //offset = 332, size = 12
		Vector RelativeLocation; //offset = 344, size = 12
		Rotator RelativeRotation; //offset = 356, size = 12
		Float DrawScale; //offset = 368, size = 4
		Vector DrawScale3D; //offset = 372, size = 12
		Vector PrePivot; //offset = 384, size = 12
		PrimitiveComponent* CollisionComponent; //offset = 396, size = 4
		Int OverlapTag; //offset = 400, size = 4
		Byte CollisionType; //offset = 404, size = 1
		Rotator RotationRate; //offset = 408, size = 12
		Rotator DesiredRotation; //offset = 420, size = 12
		Actor* PendingTouch; //offset = 432, size = 4
		Float m_fGravityScaling; //offset = 436, size = 4
		Float DensityScaling; //offset = 440, size = 4
		Float MinDistForNetRBCorrection; //offset = 444, size = 4
		Class* MessageClass; //offset = 448, size = 4
		Array<Class*> SupportedEvents; //offset = 452, size = 12
		Array<SequenceEvent*> GeneratedEvents; //offset = 464, size = 12
		Array<SeqAct_Latent*> LatentActions; //offset = 476, size = 12
		Int ActorTickBreakGroup; //offset = 488, size = 4
		Float m_fCombatStasisTime; //offset = 492, size = 4
		Float m_fPhysicsThreshold; //offset = 496, size = 4
		Float AudioObstruction; //offset = 500, size = 4
		Float AudioOcclusion; //offset = 504, size = 4

		void SetActive( Bool bActive );
		SFXModule* GetModule( Class* ModuleClass );
		Class* GetSaveObjectClass();
		void ExceededPhysicsThreshold( Actor* InstigatedBy );
		void PostInitAnimTree( SkeletalMeshComponent* SkelComp );
		void RootMotionExtracted( SkeletalMeshComponent* SkelComp, BoneAtom ExtractedRootMotionDelta );
		void RootMotionModeChanged( SkeletalMeshComponent* SkelComp );
		void PostRenderFor( PlayerController* PC, Canvas* Canvas, Vector CameraPosition, Vector CameraDir );
		void NativePostRenderFor( PlayerController* PC, Canvas* Canvas, Vector CameraPosition, Vector CameraDir );
		void SetHUDLocation( Vector NewHUDLocation );
		void OnRanOver( SVehicle* Vehicle, PrimitiveComponent* RunOverComponent, Int WheelIndex );
		void RigidBodyCollision( PrimitiveComponent* HitComponent, PrimitiveComponent* OtherComponent, CollisionImpactData RigidCollisionData, Int ContactIndex );
		void InterpolationChanged( SeqAct_Interp* InterpAction );
		void InterpolationFinished( SeqAct_Interp* InterpAction );
		void InterpolationStarted( SeqAct_Interp* InterpAction );
		void PickedUpBy( Pawn* P );
		void SpawnedByKismet();
		Vector GetTargetLocation( Actor* RequestedBy, Bool bRequestAlternateLoc );
		void FindGoodEndView( PlayerController* PC, Rotator GoodRotation );
		void NotifyLocalPlayerTeamReceived();
		String GetLocationStringFor( PlayerReplicationInfo* PRI );
		Byte ScriptGetTeamNum();
		Byte GetTeamNum();
		void PawnBaseDied();
		Bool IsPlayerOwned();
		void GetActorEyesViewPoint( Vector out_Location, Rotator out_Rotation );
		Bool IsStationary();
		FaceFXAsset* GetActorFaceFXAsset();
		Bool IsActorPlayingFaceFXAnim();
		void SetSkelControlScale( Name SkelControlName, Float Scale );
		void SetMorphWeight( Name MorphNodeName, Float MorphWeight );
		void StopActorFaceFXAnim();
		Bool PlayActorFaceFXAnim( FaceFXAnimSet* AnimSet, String GroupName, String SeqName );
		void FinishAnimControl();
		void SetAnimWeights( Array<AnimSlotInfo> SlotInfos );
		void SetAnimPosition( Name SlotName, Int ChannelIndex, Name InAnimSeqName, Float InPosition, Bool bFireNotifies, Bool bLooping );
		void BeginAnimControl( Array<AnimSet*> InAnimSets );
		void OnAnimPlay( AnimNodeSequence* SeqNode );
		void OnAnimEnd( AnimNodeSequence* SeqNode, Float PlayedTime, Float ExcessTime );
		void OnMakeNoise( SeqAct_MakeNoise* Action );
		void DoKismetAttachment( Actor* Attachment, SeqAct_AttachToActor* Action, Bool bOldCollideActors, Bool bOldBlockActors, Vector X, Vector Y, Vector Z );
		void OnAttachToActor( SeqAct_AttachToActor* Action, Int idx, Actor* Attachment, Controller* C, Array<Object*> objVars );
		void OnToggleHidden( SeqAct_ToggleHidden* Action );
		void OnChangeCollision( SeqAct_ChangeCollision* Action );
		void OnSetPhysics( SeqAct_SetPhysics* Action );
		void OnSetBlockRigidBody( SeqAct_SetBlockRigidBody* Action );
		void OnTeleportArrived();
		void OnTeleport( SeqAct_Teleport* Action, Array<Object*> objVars, Int idx, Actor* destActor, Controller* C );
		void OnHealDamage( SeqAct_HealDamage* Action, Controller* InstigatorController, Pawn* InstigatorPawn );
		void PrestreamTextures( Float Seconds, Bool bEnableStreaming );
		void OnCauseDamage( SeqAct_CauseDamage* Action, Controller* InstigatorController, Pawn* InstigatorPawn );
		void ShutDown();
		void SetNetUpdateTime( Float NewUpdateTime );
		void ForceNetRelevant();
		void OnDestroy( SeqAct_Destroy* Action );
		void ClearLatentAction( Class* actionClass, Bool bAborted, SeqAct_Latent* exceptionAction, Bool bCancelled, Int idx, SeqAct_Latent* oLatentAction );
		Bool FindEventsOfClass( Class* EventClass, Array<SequenceEvent*> out_EventList, Int idx, Bool bFoundEvent );
		Bool ActivateEventClass( Class* InClass, Actor* InInstigator, Array<SequenceEvent*> EventList, Array<Int> ActivateIndices, Bool bTest, Int idx, Int ActivateCnt );
		Bool TriggerEventClass( Class* InEventClass, Actor* InInstigator, Int ActivateIndex, Bool bTest, Array<Int> ActivateIndices );
		Float TimeSince( Float Time );
		Bool EffectIsRelevant( Vector SpawnLocation, Bool bForceDedicated, Float CullDistance, PlayerController* P, Bool bResult );
		Bool CheckMaxEffectDistance( PlayerController* P, Vector SpawnLocation, Float CullDistance, Float Dist );
		Bool CanSplash();
		void PlayTeleportEffect( Bool bOut, Bool bSound );
		Bool IsInPain(, PhysicsVolume* V );
		Bool IsInVolume( Volume* aVolume, Volume* V );
		void Reset();
		AudioComponent* GetFaceFXAudioComponent();
		void ModifyHearSoundComponent( AudioComponent* AC );
		String GetPhysicsName();
		void DisplayDebug( HUD* HUD, Float out_YL, Float out_YPos, String T, Actor* A, Float MyRadius, Float MyHeight, Canvas* Canvas );
		String GetDebugName();
		void SetGRI( GameReplicationInfo* GRI );
		void MatchStarting();
		String GetLocalString( Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI );
		void ReplaceText( String Text, String Replace, String With, Int I, String Input );
		String GetHumanReadableName();
		String GetItemName( String FullName, Int pos );
		Bool CalcCamera( Float fDeltaTime, Vector out_CamLoc, Rotator out_CamRot, Float out_FOV, Vector HitNormal, Float Radius, Float Height );
		void EndViewTarget( PlayerController* PC );
		void BecomeViewTarget( PlayerController* PC );
		Bool CheckForErrors();
		void DebugFreezeGame( PlayerController* PC );
		Float GetGravityZ();
		void CheckHitInfo( TraceHitInfo HitInfo, PrimitiveComponent* FallBackComponent, Vector Dir, Vector out_HitLocation, Vector out_NewHitLocation, Vector out_HitNormal, Vector TraceEnd, Vector TraceStart, TraceHitInfo newHitInfo );
		void TakeRadiusDamage( Controller* InstigatedBy, Float BaseDamage, Float DamageRadius, Class* DamageType, Float Momentum, Vector HurtOrigin, Bool bFullDamage, Actor* DamageCauser, Float ColRadius, Float ColHeight, Float DamageScale, Float Dist, Vector Dir, SFXModule_DamageBase* DmgModule );
		Bool HealDamage( Int Amount, Controller* Healer, Class* DamageType );
		void TakeDamage( Float DamageAmount, Controller* EventInstigator, Vector HitLocation, Vector Momentum, Class* DamageType, TraceHitInfo HitInfo, Actor* DamageCauser, Int idx, SeqEvent_TakeDamage* dmgEvent, SFXModule_DamageBase* DmgModule );
		void KilledBy( Pawn* EventInstigator );
		Bool HurtRadius( Float BaseDamage, Float DamageRadius, Class* DamageType, Float Momentum, Vector HurtOrigin, Actor* IgnoredActor, Controller* InstigatedByController, Bool bDoFullDamage, Actor* Victim, Bool bCausedDamage );
		Bool StopsProjectile( Projectile* P );
		void NotifySkelControlBeyondLimit( SkelControlLookAt* LookAt );
		void ConstraintBrokenNotify( Actor* ConOwner, RB_ConstraintSetup* ConSetup, RB_ConstraintInstance* ConInstance );
		void SetInitialState();
		void PostBeginPlay( SFXModule* Mod );
		void BroadcastLocalizedTeamMessage( Int TeamIndex, Class* InMessageClass, Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject );
		void BroadcastLocalizedMessage( Class* InMessageClass, Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject );
		void PreBeginPlay();
		Bool FindActorsOfClass( Class* ActorClass, Array<Actor*> out_Actors, Actor* TestActor );
		void LocalPlayerControllers( Class* BaseClass, PlayerController* PC );
		void AllOwnedComponents( Class* BaseClass, ActorComponent* OutComponent );
		void ComponentList( Class* BaseClass, ActorComponent* out_Component );
		void OverlappingActors( Class* BaseClass, Actor* out_Actor, Float Radius, Vector Loc, Bool bIgnoreHidden );
		void CollidingActors( Class* BaseClass, Actor* Actor, Float Radius, Vector Loc, Bool bUseOverlapCheck );
		void VisibleCollidingActors( Class* BaseClass, Actor* Actor, Float Radius, Vector Loc, Bool bIgnoreHidden );
		void VisibleActors( Class* BaseClass, Actor* Actor, Float Radius, Vector Loc );
		void TraceActors( Class* BaseClass, Actor* Actor, Vector HitLoc, Vector HitNorm, Vector End, Vector Start, Vector Extent, TraceHitInfo HitInfo, Int ExtraTraceFlags );
		void TouchingActors( Class* BaseClass, Actor* Actor, Bool bReverse );
		void BasedActors( Class* BaseClass, Actor* Actor );
		void ChildActors( Class* BaseClass, Actor* Actor );
		void DynamicActors( Class* BaseClass, Actor* Actor );
		void AllActors( Class* BaseClass, Actor* Actor );
		String GetURLMap();
		void PostTeleport( Teleporter* OutTeleporter );
		Bool PreTeleport( Teleporter* InTeleporter );
		Vector GetDestination( Controller* C );
		Bool SuggestTossVelocity( Vector TossVelocity, Vector Destination, Vector Start, Float TossSpeed, Float BaseTossZ, Float DesiredZPct, Vector CollisionSize, Float TerminalVelocity );
		Bool PlayerCanSeeMe();
		void MakeNoise( Float Loudness, Name NoiseType );
		void StopSound( WwiseBaseSoundObject* InSoundEvent );
		void PlaySound( WwiseBaseSoundObject* InSoundCue, Bool bNotReplicated, Bool bNoRepToOwner, Bool bStopWhenOwnerDestroyed, Vector SoundLocation, Bool bNoRepToRelevant );
		AudioComponent* CreateAudioComponent( SoundCue* InSoundCue, Bool bPlay, Bool bStopWhenOwnerDestroyed, Bool bUseLocation, Vector SourceLocation, Bool bAttachToSelf );
		Float GetTimerRate( Name TimerFuncName, Object* inObj );
		Float GetTimerCount( Name inTimerFunc, Object* inObj );
		Bool IsTimerActive( Name inTimerFunc, Object* inObj );
		void ClearTimer( Name inTimerFunc, Object* inObj );
		void SetTimer( Float InRate, Bool inbLoop, Name inTimerFunc, Object* inObj );
		void TornOff();
		Bool Destroy();
		Actor* Spawn( Class* SpawnClass, Actor* SpawnOwner, Name SpawnTag, Vector SpawnLocation, Rotator SpawnRotation, Actor* ActorTemplate, Object* pActorType, Bool bNoCollisionFail, Bool bFindSafeLocation );
		void GetBoundingCylinder( Float CollisionRadius, Float CollisionHeight );
		void GetComponentsBoundingBox( Box ActorBox );
		Bool IsOverlapping( Actor* A );
		Bool ContainsPoint( Vector Spot );
		Bool FindSpot( Vector BoxExtent, Vector SpotLocation );
		Bool FastTrace( Vector TraceEnd, Vector TraceStart, Vector BoxExtent, Bool bTraceBullet );
		Bool PointCheckComponent( PrimitiveComponent* InComponent, Vector PointLocation, Vector PointExtent );
		Bool TraceComponent( Vector HitLocation, Vector HitNormal, PrimitiveComponent* InComponent, Vector TraceEnd, Vector TraceStart, Vector Extent, TraceHitInfo HitInfo );
		Actor* Trace( Vector HitLocation, Vector HitNormal, Vector TraceEnd, Vector TraceStart, Bool bTraceActors, Vector Extent, TraceHitInfo HitInfo, Int ExtraTraceFlags, Int ExtraProgrammerFlags );
		void OutsideWorldBounds();
		void FellOutOfWorld( Class* dmgType );
		Bool UsedBy( Pawn* User );
		Bool OverRotated( Rotator out_Desired, Rotator out_Actual );
		Bool ClampRotation( Rotator out_Rot, Rotator rBase, Rotator rUpperLimits, Rotator rLowerLimits );
		void RanInto( Actor* Other );
		void EncroachedBy( Actor* Other );
		Bool EncroachingOn( Actor* Other );
		void CollisionChanged();
		Actor* SpecialHandling( Pawn* Other );
		void Detach( Actor* Other );
		void Attach( Actor* Other );
		void BaseChange();
		void Bump( Actor* Other, PrimitiveComponent* OtherComp, Vector HitNormal );
		void UnTouch( Actor* Other );
		void PostTouch( Actor* Other );
		void Touch( Actor* Other, PrimitiveComponent* OtherComp, Vector HitLocation, Vector HitNormal );
		void PhysicsVolumeChange( PhysicsVolume* NewVolume );
		void Landed( Vector HitNormal, Actor* FloorActor );
		void Falling();
		void HitWall( Vector HitNormal, Actor* Wall, PrimitiveComponent* WallComp );
		void Timer();
		void Tick( Float DeltaTime );
		void LostChild( Actor* Other );
		void GainedChild( Actor* Other );
		void Destroyed();
		Bool GetWasInVehicleTransitionStatus();
		void SetWasInVehicleTransitionStatus( Bool bStatus );
		void SetTickGroup( Byte NewTickGroup );
		void DetachComponent( ActorComponent* ExComponent );
		void AttachComponent( ActorComponent* NewComponent );
		void UnClock( Float Time );
		void Clock( Float Time );
		void SetPhysics( Byte newPhysics );
		void SetOnlyOwnerSee( Bool bNewOnlyOwnerSee );
		void DrawDebugMarker( Vector LineStart, Int Scale, Byte R, Byte G, Byte B, Bool bIsPersistent );
		void SetHidden( Bool bNewHidden );
		void ChartData( String DataName, Float DataValue );
		void DrawDebugCone( Vector Origin, Vector Direction, Float Length, Float AngleWidth, Float AngleHeight, Int NumSides, Color DrawColor, Bool bPersistentLines );
		void DrawDebugCylinder( Vector Start, Vector End, Float Radius, Int Segments, Byte R, Byte G, Byte B, Bool bPersistentLines );
		void DrawDebugSphere( Vector Center, Float Radius, Int Segments, Byte R, Byte G, Byte B, Bool bPersistentLines );
		void DrawDebugCoordinateSystem( Vector AxisLoc, Rotator AxisRot, Float Scale, Bool bPersistentLines );
		void DrawDebugBox( Vector Center, Vector Extent, Byte R, Byte G, Byte B, Bool bPersistentLines );
		void DrawDebugLine( Vector LineStart, Vector LineEnd, Byte R, Byte G, Byte B, Bool bPersistentLines );
		void FlushPersistentDebugLines();
		void SetForcedInitialReplicatedProperty( Property* PropToReplicate, Bool bAdd );
		void ReplicatedEvent( Name VarName );
		Bool IsOwnedBy( Actor* TestActor );
		Actor* GetBaseMost();
		Bool IsBasedOn( Actor* TestActor );
		void FindBase();
		void SetOwner( Actor* NewOwner );
		void SetBase( Actor* NewBase, Vector NewFloor, SkeletalMeshComponent* SkelComp, Name AttachName );
		Float GetTerminalVelocity();
		void AutonomousPhysics( Float DeltaSeconds );
		Bool MoveSmooth( Vector Delta );
		void SetHardAttach( Bool bNewHardAttach );
		Bool SetRelativeLocation( Vector NewLocation );
		Bool SetRelativeRotation( Rotator NewRotation );
		void SetZone( Bool bForceRefresh );
		Byte MovingWhichWay( Float Amount );
		Bool SetRotation( Rotator NewRotation );
		Bool SetLocation( Vector NewLocation );
		Bool Move( Vector Delta );
		void SetDrawScale3D( Vector NewScale3D );
		void SetDrawScale( Float NewScale );
		void SetCollisionSize( Float NewRadius, Float NewHeight );
		void SetCollision( Bool bNewColActors, Bool bNewBlockActors, Bool bNewIgnoreEncroachers );
		void FinishAnim( AnimNodeSequence* SeqNode );
		void Sleep( Float Seconds );
		String ConsoleCommand( String Command, Bool bWriteToLog );
		void ForceUpdateComponents( Bool bCollisionUpdate, Bool bTransformOnly );
	};

	class Channel: public Object
	{
		DECLARE_PACKAGE_CLASS( Channel, Object, Engine )

	public:
	};

	class ActorChannel: public Channel
	{
		DECLARE_PACKAGE_CLASS( ActorChannel, Channel, Engine )

	public:
	};

	enum EComponentType
	{
		COMPONENT_Unknown,
		COMPONENT_Animation,
		COMPONENT_AI,
		COMPONENT_Gameplay,
		COMPONENT_Graphics,
		COMPONENT_Particles,
		COMPONENT_StaticMesh,
	};

	class ActorComponent: public Component
	{
		DECLARE_PACKAGE_CLASS( ActorComponent, Component, Engine )

	public:

		Pointer Scene; //offset = 72, size = 4
		Actor* Owner; //offset = 76, size = 4
		Bool bAttached: 1; //offset = 80, size = 4
		Bool bTickInEditor: 1; //offset = 80, size = 4
		Bool bNeedsReattach: 1; //offset = 80, size = 4
		Bool bNeedsUpdateTransform: 1; //offset = 80, size = 4
		Byte TickGroup; //offset = 84, size = 1
		Byte ComponentType; //offset = 85, size = 1

		void DetachFromAny();
		void ForceUpdate( Bool bTransformOnly );
		void SetComponentRBFixed( Bool bFixed );
		void SetTickGroup( Byte NewTickGroup );
	};

	class ActorFactory: public Object
	{
		DECLARE_PACKAGE_CLASS( ActorFactory, Object, Engine )

	public:

		Class* GameplayActorClass; //offset = 60, size = 4
		String MenuName; //offset = 64, size = 12
		Int MenuPriority; //offset = 76, size = 4
		Class* NewActorClass; //offset = 80, size = 4
		Bool bPlaceable: 1; //offset = 84, size = 4
		Bool m_bNoCollisionFail: 1; //offset = 84, size = 4
		String SpecificGameName; //offset = 88, size = 12
	};

	class ActorFactoryAI: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryAI, ActorFactory, Engine )

	public:

		Class* ControllerClass; //offset = 100, size = 4
		Class* PawnClass; //offset = 104, size = 4
		String PawnName; //offset = 108, size = 12
		Bool bGiveDefaultInventory: 1; //offset = 120, size = 4
		Array<Class*> InventoryList; //offset = 124, size = 12
		Int TeamIndex; //offset = 136, size = 4
	};

	class ActorFactoryAmbientSound: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryAmbientSound, ActorFactory, Engine )

	public:

		SoundCue* AmbientSoundCue; //offset = 100, size = 4
	};

	class ActorFactoryAmbientSoundSimple: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryAmbientSoundSimple, ActorFactory, Engine )

	public:

		SoundNodeWave* SoundNodeWave; //offset = 100, size = 4
	};

	class ActorFactoryArchetype: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryArchetype, ActorFactory, Engine )

	public:

		Actor* ArchetypeActor; //offset = 100, size = 4
	};

	class ActorFactoryCoverLink: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryCoverLink, ActorFactory, Engine )

	public:
	};

	class ActorFactoryDynamicSM: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryDynamicSM, ActorFactory, Engine )

	public:

		StaticMesh* StaticMesh; //offset = 100, size = 4
		Vector DrawScale3D; //offset = 104, size = 12
		Bool bNoEncroachCheck: 1; //offset = 116, size = 4
		Bool bNotifyRigidBodyCollision: 1; //offset = 116, size = 4
		Bool bUseCompartment: 1; //offset = 116, size = 4
		Bool bCastDynamicShadow: 1; //offset = 116, size = 4
		Byte CollisionType; //offset = 120, size = 1
	};

	class ActorFactoryEmitter: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryEmitter, ActorFactory, Engine )

	public:

		ParticleSystem* ParticleSystem; //offset = 100, size = 4
	};

	class ActorFactoryLensFlare: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryLensFlare, ActorFactory, Engine )

	public:

		LensFlare* LensFlareObject; //offset = 100, size = 4
	};

	class ActorFactoryLight: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryLight, ActorFactory, Engine )

	public:
	};

	class ActorFactoryMover: public ActorFactoryDynamicSM
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryMover, ActorFactoryDynamicSM, Engine )

	public:
	};

	class ActorFactoryPathNode: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryPathNode, ActorFactory, Engine )

	public:
	};

	class ActorFactoryPhysicsAsset: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryPhysicsAsset, ActorFactory, Engine )

	public:

		PhysicsAsset* PhysicsAsset; //offset = 100, size = 4
		SkeletalMesh* SkeletalMesh; //offset = 104, size = 4
		Bool bStartAwake: 1; //offset = 108, size = 4
		Bool bDamageAppliesImpulse: 1; //offset = 108, size = 4
		Bool bNotifyRigidBodyCollision: 1; //offset = 108, size = 4
		Bool bUseCompartment: 1; //offset = 108, size = 4
		Bool bCastDynamicShadow: 1; //offset = 108, size = 4
		Vector InitialVelocity; //offset = 112, size = 12
		Vector DrawScale3D; //offset = 124, size = 12
	};

	class ActorFactoryPlayerStart: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryPlayerStart, ActorFactory, Engine )

	public:
	};

	class ActorFactoryRigidBody: public ActorFactoryDynamicSM
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryRigidBody, ActorFactoryDynamicSM, Engine )

	public:

		Bool bStartAwake: 1; //offset = 124, size = 4
		Bool bDamageAppliesImpulse: 1; //offset = 124, size = 4
		Bool bLocalSpaceInitialVelocity: 1; //offset = 124, size = 4
		Vector InitialVelocity; //offset = 128, size = 12
		DistributionVector* AdditionalVelocity; //offset = 140, size = 4
		DistributionVector* InitialAngularVelocity; //offset = 144, size = 4
		Byte RBChannel; //offset = 148, size = 1
	};

	class ActorFactorySkeletalMesh: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactorySkeletalMesh, ActorFactory, Engine )

	public:

		SkeletalMesh* SkeletalMesh; //offset = 100, size = 4
		AnimSet* AnimSet; //offset = 104, size = 4
		Name AnimSequenceName; //offset = 108, size = 8
	};

	class ActorFactoryStaticMesh: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryStaticMesh, ActorFactory, Engine )

	public:

		StaticMesh* StaticMesh; //offset = 100, size = 4
		Vector DrawScale3D; //offset = 104, size = 12
	};

	class ActorFactoryTrigger: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryTrigger, ActorFactory, Engine )

	public:
	};

	class ActorFactoryVehicle: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryVehicle, ActorFactory, Engine )

	public:

		Class* VehicleClass; //offset = 100, size = 4
	};

	const char* BLOCKEDPATHCOST = 10000;

	class ReachSpec: public Object
	{
		DECLARE_PACKAGE_CLASS( ReachSpec, Object, Engine )

	public:

		Pointer NavOctreeObject; //offset = 60, size = 4
		Int Distance; //offset = 64, size = 4
		Vector Direction; //offset = 68, size = 12
		NavigationPoint* Start; //offset = 80, size = 4
		NavReference End; //offset = 84, size = 20
		Int CollisionRadius; //offset = 104, size = 4
		Int CollisionHeight; //offset = 108, size = 4
		Int reachFlags; //offset = 112, size = 4
		Int MaxLandingVelocity; //offset = 116, size = 4
		Byte bPruned; //offset = 120, size = 1
		Byte PathColorIndex; //offset = 121, size = 1
		Bool bAddToNavigationOctree: 1; //offset = 124, size = 4
		Bool bCanCutCorners: 1; //offset = 124, size = 4
		Bool bCheckForObstructions: 1; //offset = 124, size = 4
		Bool bSkipPrune: 1; //offset = 124, size = 4
		Array<Class*> PruneSpecList; //offset = 128, size = 12
		Actor* BlockedBy; //offset = 140, size = 4
		Int m_nBlockedCount; //offset = 144, size = 4

		Bool IsBlocked();
		Bool IsBlockedFor( Pawn* P );
		Int CostFor( Pawn* P );
	};

	class AdvancedReachSpec: public ReachSpec
	{
		DECLARE_PACKAGE_CLASS( AdvancedReachSpec, ReachSpec, Engine )

	public:
	};

	enum EViewTargetBlendFunction
	{
		VTBlend_Linear,
		VTBlend_Cubic,
		VTBlend_EaseIn,
	};

	struct ViewTargetTransitionParams
	{
		Float BlendTime; //offset = 0, size = 4
		Byte BlendFunction; //offset = 4, size = 1
		Float BlendExp; //offset = 8, size = 4
	};

	struct TViewTarget
	{
		Actor* Target; //offset = 0, size = 4
		Controller* Controller; //offset = 4, size = 4
		TPOV POV; //offset = 8, size = 28
		Float AspectRatio; //offset = 36, size = 4
		PlayerReplicationInfo* PRI; //offset = 40, size = 4
	};

	struct TCameraCache
	{
		Float TimeStamp; //offset = 0, size = 4
		TPOV POV; //offset = 4, size = 28
	};

	class Camera: public Actor
	{
		DECLARE_PACKAGE_CLASS( Camera, Actor, Engine )

	public:

		PlayerController* PCOwner; //offset = 508, size = 4
		Name CameraStyle; //offset = 512, size = 8
		Float DefaultFOV; //offset = 520, size = 4
		Bool bLockedFOV: 1; //offset = 524, size = 4
		Bool bConstrainAspectRatio: 1; //offset = 524, size = 4
		Bool bEnableFading: 1; //offset = 524, size = 4
		Bool bCamOverridePostProcess: 1; //offset = 524, size = 4
		Bool bEnableColorScaling: 1; //offset = 524, size = 4
		Bool bEnableColorScaleInterp: 1; //offset = 524, size = 4
		Float LockedFOV; //offset = 528, size = 4
		Float ConstrainedAspectRatio; //offset = 532, size = 4
		Float DefaultAspectRatio; //offset = 536, size = 4
		Color FadeColor; //offset = 540, size = 4
		Float FadeAmount; //offset = 544, size = 4
		PostProcessSettings CamPostProcessSettings; //offset = 548, size = 144
		Vector ColorScale; //offset = 692, size = 12
		Vector DesiredColorScale; //offset = 704, size = 12
		Vector OriginalColorScale; //offset = 716, size = 12
		Float ColorScaleInterpDuration; //offset = 728, size = 4
		Float ColorScaleInterpStartTime; //offset = 732, size = 4
		TCameraCache CameraCache; //offset = 736, size = 32
		TViewTarget ViewTarget; //offset = 768, size = 44
		TViewTarget PendingViewTarget; //offset = 812, size = 44
		Float BlendTimeToGo; //offset = 856, size = 4
		ViewTargetTransitionParams BlendParams; //offset = 860, size = 12
		Array<CameraModifier*> ModifierList; //offset = 872, size = 12
		Float FreeCamDistance; //offset = 884, size = 4
		Vector FreeCamOffset; //offset = 888, size = 12

		void DisplayDebug( HUD* HUD, Float out_YL, Float out_YPos, Vector EyesLoc, Rotator EyesRot, Canvas* Canvas );
		Bool AllowPawnRotation();
		void ApplyCameraModifiers( Float DeltaTime, TPOV OutPOV, Int ModifierIdx );
		void ProcessViewRotation( Float DeltaTime, Rotator OutViewRotation, Rotator OutDeltaRot, Int ModifierIdx );
		void SetViewTarget( Actor* NewViewTarget, ViewTargetTransitionParams TransitionParams );
		void UpdateViewTarget( TViewTarget OutVT, Float DeltaTime, Vector Loc, Vector pos, Vector HitLocation, Vector HitNormal, Rotator Rot, Actor* HitActor, CameraActor* CamActor, Bool bDoNotApplyModifiers, TPOV OrigPOV );
		void CheckViewTarget( TViewTarget VT );
		void FillCameraCache( TPOV NewPOV );
		TPOV BlendViewTargets( TViewTarget A, TViewTarget B, Float Alpha, TPOV POV );
		void UpdateCamera( Float DeltaTime, TPOV NewPOV, Float DurationPct, Float BlendPct );
		void SetDesiredColorScale( Vector NewColorScale, Float InterpTime );
		void GetCameraViewPoint( Vector OutCamLoc, Rotator OutCamRot );
		void SetFOV( Float NewFOV );
		Float GetFOVAngle();
		void InitializeFor( PlayerController* PC );
	};

	const char* MAX_ACTIVE_CAMERA_ANIMS = 8;

	class AnimatedCamera: public Camera
	{
		DECLARE_PACKAGE_CLASS( AnimatedCamera, Camera, Engine )

	public:

		CameraAnimInst* AnimInstPool[8]; //offset = 900, size = 4
		Array<CameraAnimInst*> ActiveAnims; //offset = 932, size = 12
		Array<CameraAnimInst*> FreeAnims; //offset = 944, size = 12
		DynamicCameraActor* AnimCameraActor; //offset = 956, size = 4
		DynamicCameraActor* AccumulatorCameraActor; //offset = 960, size = 4

		void StopCameraAnim( CameraAnim* Anim, Bool bImmediate );
		Bool PlayCameraAnim( CameraAnim* Anim, Float Rate, Float Scale, Float BlendInTime, Float BlendOutTime, Bool bLoop, Bool bRandomStartTime );
		void ApplyCameraModifiersNative( Float DeltaTime, TPOV OutPOV );
		void ApplyCameraModifiers( Float DeltaTime, TPOV OutPOV );
		void Destroyed();
		void PostBeginPlay( Int idx );
	};

	enum ERadialImpulseFalloff
	{
		RIF_Constant,
		RIF_Linear,
	};

	enum ERBCollisionChannel
	{
		RBCC_Default,
		RBCC_Nothing,
		RBCC_Pawn,
		RBCC_Vehicle,
		RBCC_Water,
		RBCC_GameplayPhysics,
		RBCC_EffectPhysics,
	};

	struct RBCollisionChannelContainer
	{
		Bool Default: 1; //offset = 0, size = 4
		Bool Nothing: 1; //offset = 0, size = 4
		Bool Pawn: 1; //offset = 0, size = 4
		Bool Vehicle: 1; //offset = 0, size = 4
		Bool Water: 1; //offset = 0, size = 4
		Bool GameplayPhysics: 1; //offset = 0, size = 4
		Bool EffectPhysics: 1; //offset = 0, size = 4
		Bool Untitled1: 1; //offset = 0, size = 4
		Bool Untitled2: 1; //offset = 0, size = 4
		Bool Untitled3: 1; //offset = 0, size = 4
		Bool Untitled4: 1; //offset = 0, size = 4
		Bool Cloth: 1; //offset = 0, size = 4
		Bool FluidDrain: 1; //offset = 0, size = 4
	};

	struct MaterialViewRelevance
	{
		Bool bOpaque: 1; //offset = 0, size = 4
		Bool bTranslucent: 1; //offset = 0, size = 4
		Bool bDistortion: 1; //offset = 0, size = 4
		Bool bLit: 1; //offset = 0, size = 4
		Bool bUsesSceneColor: 1; //offset = 0, size = 4
	};

	class PrimitiveComponent: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( PrimitiveComponent, ActorComponent, Engine )

	public:

		Pointer SceneInfo; //offset = 88, size = 4
		Int DetachFence; //offset = 92, size = 4
		Float LocalToWorldDeterminant; //offset = 96, size = 4
		Matrix LocalToWorld; //offset = 112, size = 64
		Int MotionBlurInfoIndex; //offset = 176, size = 4
		Array<Pointer> DecalList; //offset = 180, size = 12
		Int Tag; //offset = 192, size = 4
		PrimitiveComponent* ShadowParent; //offset = 196, size = 4
		FogVolumeDensityComponent* FogVolumeComponent; //offset = 200, size = 4
		BoxSphereBounds Bounds; //offset = 204, size = 28
		LightEnvironmentComponent* LightEnvironment; //offset = 232, size = 4
		Float CullDistance; //offset = 236, size = 4
		Float CachedCullDistance; //offset = 240, size = 4
		Byte DepthPriorityGroup; //offset = 244, size = 1
		Byte ViewOwnerDepthPriorityGroup; //offset = 245, size = 1
		Byte DetailMode; //offset = 246, size = 1
		Float MotionBlurScale; //offset = 248, size = 4
		Bool bUseViewOwnerDepthPriorityGroup: 1; //offset = 252, size = 4
		Bool bAllowCullDistanceVolume: 1; //offset = 252, size = 4
		Bool HiddenGame: 1; //offset = 252, size = 4
		Bool HiddenEditor: 1; //offset = 252, size = 4
		Bool bOwnerNoSee: 1; //offset = 252, size = 4
		Bool bOnlyOwnerSee: 1; //offset = 252, size = 4
		Bool bIgnoreOwnerHidden: 1; //offset = 252, size = 4
		Bool bUseAsOccluder: 1; //offset = 252, size = 4
		Bool bAllowApproximateOcclusion: 1; //offset = 252, size = 4
		Bool bFirstFrameOcclusion: 1; //offset = 252, size = 4
		Bool bForceMipStreaming: 1; //offset = 252, size = 4
		Bool bAcceptsDecals: 1; //offset = 252, size = 4
		Bool bAcceptsDecalsDuringGameplay: 1; //offset = 252, size = 4
		Bool bIsRefreshingDecals: 1; //offset = 252, size = 4
		Bool bAcceptsFoliage: 1; //offset = 252, size = 4
		Int TranslucencySortPriority; //offset = 256, size = 4
		Int LocalTranslucencySortPriority; //offset = 260, size = 4
		Bool CastShadow: 1; //offset = 264, size = 4
		Bool bForceDirectLightMap: 1; //offset = 264, size = 4
		Bool bCastDynamicShadow: 1; //offset = 264, size = 4
		Bool bCastHiddenShadow: 1; //offset = 264, size = 4
		Bool bAcceptsLights: 1; //offset = 264, size = 4
		Bool bAcceptsDynamicLights: 1; //offset = 264, size = 4
		LightingChannelContainer LightingChannels; //offset = 268, size = 4
		Bool bUsePrecomputedShadows: 1; //offset = 272, size = 4
		Bool bCullModulatedShadowOnBackfaces: 1; //offset = 272, size = 4
		Bool bCullModulatedShadowOnEmissive: 1; //offset = 272, size = 4
		Bool bBioForcePrecomputedShadows: 1; //offset = 272, size = 4
		Bool CollideActors: 1; //offset = 272, size = 4
		Bool BlockActors: 1; //offset = 272, size = 4
		Bool BlockZeroExtent: 1; //offset = 272, size = 4
		Bool BlockNonZeroExtent: 1; //offset = 272, size = 4
		Bool BlockRigidBody: 1; //offset = 272, size = 4
		Bool RigidBodyIgnorePawns: 1; //offset = 272, size = 4
		Byte RBChannel; //offset = 276, size = 1
		RBCollisionChannelContainer RBCollideWithChannels; //offset = 280, size = 4
		Bool bDisableAllRigidBody: 1; //offset = 284, size = 4
		Bool bNotifyRigidBodyCollision: 1; //offset = 284, size = 4
		Bool bFluidDrain: 1; //offset = 284, size = 4
		Bool bFluidTwoWay: 1; //offset = 284, size = 4
		Bool bIgnoreRadialImpulse: 1; //offset = 284, size = 4
		Bool bIgnoreRadialForce: 1; //offset = 284, size = 4
		Bool bIgnoreForceField: 1; //offset = 284, size = 4
		Bool bUseCompartment: 1; //offset = 284, size = 4
		Bool AlwaysLoadOnClient: 1; //offset = 284, size = 4
		Bool AlwaysLoadOnServer: 1; //offset = 284, size = 4
		Bool bIgnoreHiddenActorsMembership: 1; //offset = 284, size = 4
		Bool bWasSNFiltered: 1; //offset = 284, size = 4
		Array<Int> OctreeNodes; //offset = 288, size = 12
		PhysicalMaterial* PhysMaterialOverride; //offset = 300, size = 4
		RB_BodyInstance* BodyInstance; //offset = 304, size = 4
		Byte RBDominanceGroup; //offset = 308, size = 1
		Matrix CachedParentToWorld; //offset = 320, size = 64
		Vector Translation; //offset = 384, size = 12
		Rotator Rotation; //offset = 396, size = 12
		Float Scale; //offset = 408, size = 4
		Vector Scale3D; //offset = 412, size = 12
		Bool AbsoluteTranslation: 1; //offset = 424, size = 4
		Bool AbsoluteRotation: 1; //offset = 424, size = 4
		Bool AbsoluteScale: 1; //offset = 424, size = 4
		Float LastSubmitTime; //offset = 428, size = 4
		Float LastRenderTime; //offset = 432, size = 4
		Int UmbraObject; //offset = 436, size = 4
		Bool bUmbraUpdated: 1; //offset = 440, size = 4
		Float ScriptRigidBodyCollisionThreshold; //offset = 444, size = 4

		Rotator GetRotation();
		Vector GetPosition(, Vector Position );
		void SetAbsolute( Bool NewAbsoluteTranslation, Bool NewAbsoluteRotation, Bool NewAbsoluteScale );
		void SetScale3D( Vector NewScale3D );
		void SetScale( Float NewScale );
		void SetRotation( Rotator NewRotation );
		void SetTranslation( Vector NewTranslation );
		void SetActorCollision( Bool NewCollideActors, Bool NewBlockActors );
		void SetTraceBlocking( Bool NewBlockZeroExtent, Bool NewBlockNonZeroExtent );
		void SetViewOwnerDepthPriorityGroup( Bool bNewUseViewOwnerDepthPriorityGroup, Byte NewViewOwnerDepthPriorityGroup );
		void SetDepthPriorityGroup( Byte NewDepthPriorityGroup );
		void SetLightingChannels( LightingChannelContainer NewLightingChannels );
		void SetCullDistance( Float NewCullDistance );
		void SetLightEnvironment( LightEnvironmentComponent* NewLightEnvironment );
		void SetShadowParent( PrimitiveComponent* NewShadowParent );
		void SetIgnoreOwnerHidden( Bool bNewIgnoreOwnerHidden );
		void SetOnlyOwnerSee( Bool bNewOnlyOwnerSee );
		void SetOwnerNoSee( Bool bNewOwnerNoSee );
		void SetHidden( Bool NewHidden );
		void SetRBDominanceGroup( Byte InDomGroup );
		RB_BodyInstance* GetRootBodyInstance();
		void SetPhysMaterialOverride( PhysicalMaterial* NewPhysMaterial );
		void SetNotifyRigidBodyCollision( Bool bNewNotifyRigidBodyCollision );
		void SetRBChannel( Byte Channel );
		void SetRBCollidesWithChannel( Byte Channel, Bool bNewCollides );
		void SetBlockRigidBody( Bool bNewBlockRigidBody );
		Bool RigidBodyIsAwake( Name BoneName );
		void PutRigidBodyToSleep( Name BoneName );
		void WakeRigidBody( Name BoneName );
		void SetRBRotation( Rotator NewRot, Name BoneName );
		void SetRBPosition( Vector NewPos, Name BoneName );
		void SetRBAngularVelocity( Vector NewAngVel, Bool bAddToCurrent );
		void SetRBLinearVelocity( Vector NewVel, Bool bAddToCurrent );
		void AddRadialForce( Vector Origin, Float Radius, Float Strength, Byte Falloff );
		void AddForce( Vector Force, Vector Position, Name BoneName );
		void AddRadialImpulse( Vector Origin, Float Radius, Float Strength, Byte Falloff, Bool bVelChange );
		void AddImpulse( Vector Impulse, Vector Position, Name BoneName, Bool bVelChange );
	};

	class ArrowComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( ArrowComponent, PrimitiveComponent, Engine )

	public:

		Color ArrowColor; //offset = 448, size = 4
		Float ArrowSize; //offset = 452, size = 4
	};

	const char* INFINITE_PATH_COST = 10000;

	struct NavigationOctreeObject
	{
		Box BoundingBox; //offset = 0, size = 28
		Vector BoxCenter; //offset = 28, size = 12
		Pointer OctreeNode; //offset = 40, size = 4
		Object* Owner; //offset = 44, size = 4
		Byte OwnerType; //offset = 48, size = 1
	};

	class NavigationPoint: public Actor
	{
		DECLARE_PACKAGE_CLASS( NavigationPoint, Actor, Engine )

	public:

		Bool bEndPoint: 1; //offset = 508, size = 4
		Bool bTransientEndPoint: 1; //offset = 508, size = 4
		Bool bHideEditorPaths: 1; //offset = 508, size = 4
		Bool bCanReach: 1; //offset = 508, size = 4
		Bool bAlreadyVisited: 1; //offset = 508, size = 4
		NavigationOctreeObject NavOctreeObject; //offset = 512, size = 52
		Bool bBlocked: 1; //offset = 564, size = 4
		Bool bOneWayPath: 1; //offset = 564, size = 4
		Bool bNeverUseStrafing: 1; //offset = 564, size = 4
		Bool bAlwaysUseStrafing: 1; //offset = 564, size = 4
		Bool bForceNoStrafing: 1; //offset = 564, size = 4
		Bool bAutoBuilt: 1; //offset = 564, size = 4
		Bool bSpecialMove: 1; //offset = 564, size = 4
		Bool bNoAutoConnect: 1; //offset = 564, size = 4
		Bool bNotBased: 1; //offset = 564, size = 4
		Bool bPathsChanged: 1; //offset = 564, size = 4
		Bool bDestinationOnly: 1; //offset = 564, size = 4
		Bool bSourceOnly: 1; //offset = 564, size = 4
		Bool bSpecialForced: 1; //offset = 564, size = 4
		Bool bMustBeReachable: 1; //offset = 564, size = 4
		Bool bBlockable: 1; //offset = 564, size = 4
		Bool bFlyingPreferred: 1; //offset = 564, size = 4
		Bool bMayCausePain: 1; //offset = 564, size = 4
		Bool bVehicleDestination: 1; //offset = 564, size = 4
		Bool bMakeSourceOnly: 1; //offset = 564, size = 4
		Bool bMustTouchToReach: 1; //offset = 564, size = 4
		Bool bCanWalkOnToReach: 1; //offset = 564, size = 4
		Bool bBuildLongPaths: 1; //offset = 564, size = 4
		Bool bBlockedForVehicles: 1; //offset = 564, size = 4
		Bool bPreferredVehiclePath: 1; //offset = 564, size = 4
		Bool bRequiresPrecisionMovement: 1; //offset = 564, size = 4
		Bool bHasCrossLevelPaths: 1; //offset = 564, size = 4
		Array<ReachSpec*> PathList; //offset = 568, size = 12
		Array<NavReference> EditorProscribedPaths; //offset = 580, size = 12
		Array<NavReference> EditorForcedPaths; //offset = 592, size = 12
		Array<Guid> VolumeGUIDs; //offset = 604, size = 12
		Array<Volume*> VolumeList; //offset = 616, size = 12
		Int visitedWeight; //offset = 628, size = 4
		Int bestPathWeight; //offset = 632, size = 4
		NavigationPoint* nextNavigationPoint; //offset = 636, size = 4
		NavigationPoint* nextOrdered; //offset = 640, size = 4
		NavigationPoint* prevOrdered; //offset = 644, size = 4
		NavigationPoint* previousPath; //offset = 648, size = 4
		Int Cost; //offset = 652, size = 4
		Int ExtraCost; //offset = 656, size = 4
		Int TransientCost; //offset = 660, size = 4
		Int FearCost; //offset = 664, size = 4
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> CostArray; //offset = 668, size = 20
		Float m_fNodeWeight; //offset = 688, size = 4
		DroppedPickup* InventoryCache; //offset = 692, size = 4
		Float InventoryDist; //offset = 696, size = 4
		Float LastDetourWeight; //offset = 700, size = 4
		CylinderComponent* CylinderComponent; //offset = 704, size = 4
		Objective* NearestObjective; //offset = 708, size = 4
		Float ObjectiveDistance; //offset = 712, size = 4
		Cylinder MaxPathSize; //offset = 716, size = 8
		Guid NavGuid; //offset = 724, size = 16
		SpriteComponent* GoodSprite; //offset = 740, size = 4
		SpriteComponent* BadSprite; //offset = 744, size = 4
		Int NetworkID; //offset = 748, size = 4
		Pawn* AnchoredPawn; //offset = 752, size = 4
		Float LastAnchoredPawnTime; //offset = 756, size = 4
		String Abbrev; //offset = 760, size = 12
		Int PathfindTag; //offset = 772, size = 4

		Bool OnMatchingNetworks( NavigationPoint* Nav );
		void OnToggle( SeqAct_Toggle* inAction );
		Bool IsOnDifferentNetwork( NavigationPoint* Nav );
		Bool GetAllNavInRadius( Actor* chkActor, Vector ChkPoint, Float Radius, Array<NavigationPoint*> out_NavList, Bool bSkipBlocked, Int inNetworkID, Cylinder MinSize );
		NavigationPoint* GetNearestNavToPoint( Actor* chkActor, Vector ChkPoint, Class* RequiredClass, Array<NavigationPoint*> ExcludeList, NavigationPoint* Nav, NavigationPoint* BestNav, Float Dist, Float bestDist );
		NavigationPoint* GetNearestNavToActor( Actor* chkActor, Class* RequiredClass, Array<NavigationPoint*> ExcludeList, Float MinDist, NavigationPoint* Nav, NavigationPoint* BestNav, Float Dist, Float bestDist );
		Bool IsAvailableTo( Actor* chkActor );
		Bool ProceedWithMove( Pawn* Other );
		Bool SuggestMovePreparation( Pawn* Other );
		Float DetourWeight( Pawn* Other, Float PathWeight );
		Bool Accept( Actor* Incoming, Actor* Source, Bool bResult );
		Int SpecialCost( Pawn* Seeker, ReachSpec* Path );
		Bool CanTeleport( Actor* A );
		Bool IsUsableAnchorFor( Pawn* P );
		ReachSpec* GetReachSpecTo( NavigationPoint* Nav );
		void GetBoundingCylinder( Float CollisionRadius, Float CollisionHeight );
	};

	class Ladder: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( Ladder, NavigationPoint, Engine )

	public:

		LadderVolume* MyLadder; //offset = 776, size = 4
		Ladder* LadderList; //offset = 780, size = 4

		Bool SuggestMovePreparation( Pawn* Other );
	};

	class AutoLadder: public Ladder
	{
		DECLARE_PACKAGE_CLASS( AutoLadder, Ladder, Engine )

	public:
	};

	const char* BIO2DA_INDEX_ERROR = -1;

	struct Bio2daMasterRowIndexRec
	{
		Int nRowIndex; //offset = 0, size = 4
		Bio2DA* pTable; //offset = 4, size = 4
	};

	struct Bio2DACellData
	{
		Byte nDataType_NATIVE_MIRROR; //offset = 0, size = 1
		Int nData_NATIVE_MIRROR; //offset = 4, size = 4
	};

	class Bio2DA: public Object
	{
		DECLARE_PACKAGE_CLASS( Bio2DA, Object, Engine )

	public:

		Array<Bio2DACellData> m_CellData; //offset = 60, size = 12
		Map_Mirror m_CellDataMap; //offset = 72, size = 20
		Map_Mirror m_MasterRowIndex; //offset = 92, size = 20
		Array<Name> m_sRowLabel; //offset = 112, size = 12
		Map_Mirror m_ColumnIndex; //offset = 124, size = 20
		Array<Bio2DA*> lst; //offset = 144, size = 12

		Int GetRowNumber( Int nRowIndex );
		Name GetRowName( Int nRowIndex );
		Name GetColumnName( Int nColumn );
		Int GetNumberedRowIndex( Int nRowID );
		Int GetRowIndex( Name sRow );
		Int GetColumnIndex( Name sColumn );
		Bool GetFloatEntryNumN( Int nRowID, Name sColumn, Float fEntry );
		Bool GetFloatEntryNumI( Int nRowID, Int nColumn, Float fEntry );
		Bool GetFloatEntryNN( Name sRow, Name sColumn, Float fEntry );
		Bool GetFloatEntryNI( Name sRow, Int nColumn, Float fEntry );
		Bool GetFloatEntryIN( Int nRow, Name sColumn, Float fEntry );
		Bool GetFloatEntryII( Int nRow, Int nColumn, Float fEntry );
		Bool GetIntEntryNumN( Int nRowID, Name sColumn, Int nEntry );
		Bool GetIntEntryNumI( Int nRowID, Int nColumn, Int nEntry );
		Bool GetIntEntryNN( Name sRow, Name sColumn, Int nEntry );
		Bool GetIntEntryNI( Name sRow, Int nColumn, Int nEntry );
		Bool GetIntEntryIN( Int nRow, Name sColumn, Int nEntry );
		Bool GetIntEntryII( Int nRow, Int nColumn, Int nEntry );
		Bool GetNameEntryNumN( Int nRowID, Name sColumn, Name nEntry );
		Bool GetNameEntryNumI( Int nRowID, Int nColumn, Name nEntry );
		Bool GetNameEntryNN( Name sRow, Name sColumn, Name nEntry );
		Bool GetNameEntryNI( Name sRow, Int nColumn, Name nEntry );
		Bool GetNameEntryIN( Int nRow, Name sColumn, Name nEntry );
		Bool GetNameEntryII( Int nRow, Int nColumn, Name nEntry );
		Bool GetStringEntryNumN( Int nRowID, Name sColumn, String sEntry );
		Bool GetStringEntryNumI( Int nRowID, Int nColumn, String sEntry );
		Bool GetStringEntryNN( Name sRow, Name sColumn, String sEntry );
		Bool GetStringEntryNI( Name sRow, Int nColumn, String sEntry );
		Bool GetStringEntryIN( Int nRow, Name sColumn, String sEntry );
		Bool GetStringEntryII( Int nRow, Int nColumn, String sEntry );
		Int GetNumRows();
		Int GetNumColumns();
	};

	class Bio2DANumberedRows: public Bio2DA
	{
		DECLARE_PACKAGE_CLASS( Bio2DANumberedRows, Bio2DA, Engine )

	public:

		Map_Mirror m_MasterNumberedRowIndex; //offset = 156, size = 20
		Array<Int> m_lstRowNumbers; //offset = 176, size = 12
	};

	class BioActorSaveObject: public BioBaseSaveObject
	{
		DECLARE_PACKAGE_CLASS( BioActorSaveObject, BioBaseSaveObject, Engine )

	public:

		Vector Location; //offset = 72, size = 12
		Rotator Rotation; //offset = 84, size = 12
		Vector Velocity; //offset = 96, size = 12
		Vector Acceleration; //offset = 108, size = 12
		Bool bScriptInitialized: 1; //offset = 120, size = 4
		Bool bHidden: 1; //offset = 120, size = 4
		Bool bStasis: 1; //offset = 120, size = 4

		Bool LoadPositionAndOrientation( Actor* O );
		Bool SavePositionAndOrientation( Actor* O );
		void LoadObject( Object* O );
		void SaveObject( Object* O );
	};

	class BioBaseComponent: public BioCoreBaseObject
	{
		DECLARE_PACKAGE_CLASS( BioBaseComponent, BioCoreBaseObject, Engine )

	public:

		Actor* Owner; //offset = 60, size = 4
		Bool m_bGeneratedTreasure: 1; //offset = 64, size = 4
		Bool m_bChallengeScaled: 1; //offset = 64, size = 4
		Bool m_bIsPhysicsSleeping: 1; //offset = 64, size = 4

		Bool ExitCombatStasis();
		Bool EnterCombatStasis( Float fDuration, Bool bAllowDamage, srStasisPowerText srStasisPowerText );
		Bool ProceedWithMove( Pawn* oPawn );
		void SetWaitingForMove( Bool bVal );
		void OnAnimPlay( AnimNodeSequence* oAnimNodeSequence );
		void OnAnimEnd( AnimNodeSequence* oAnimNodeSequence, Float PlayedTime, Float ExcessTime );
	};

	class BioBaseDamageComponent: public BioCoreBaseObject
	{
		DECLARE_PACKAGE_CLASS( BioBaseDamageComponent, BioCoreBaseObject, Engine )

	public:

		Actor* Owner; //offset = 60, size = 4

		void TakeRadiusDamage( Controller* InstigatedBy, Float BaseDamage, Float DamageRadius, Class* DamageType, Float Momentum, Vector HurtOrigin, Bool bFullDamage, Actor* pDamageCausingActor, DamageType* pDamage );
		void TakeDamage( Float Damage, Controller* EventInstigator, Vector HitLocation, Vector Momentum, Class* DamageType, TraceHitInfo HitInfo, Actor* pDamageCausingActor, DamageType* pDamage );
	};

	struct BioStageDOFData
	{
		Bool bEnable: 1; //offset = 0, size = 4
		Float fFocusInnerRadius; //offset = 4, size = 4
		Float fFocusDistance; //offset = 8, size = 4
	};

	class BioEngineEnums: public Object
	{
		DECLARE_PACKAGE_CLASS( BioEngineEnums, Object, Engine )

	public:
	};

	class PostProcessEffect: public Object
	{
		DECLARE_PACKAGE_CLASS( PostProcessEffect, Object, Engine )

	public:

		Bool bShowInEditor: 1; //offset = 60, size = 4
		Bool bShowInGame: 1; //offset = 60, size = 4
		Bool bUseWorldSettings: 1; //offset = 60, size = 4
		Bool bMergePostUber: 1; //offset = 60, size = 4
		Name EffectName; //offset = 64, size = 8
		Int NodePosY; //offset = 72, size = 4
		Int NodePosX; //offset = 76, size = 4
		Int DrawWidth; //offset = 80, size = 4
		Int DrawHeight; //offset = 84, size = 4
		Int OutDrawY; //offset = 88, size = 4
		Int InDrawY; //offset = 92, size = 4
		Byte SceneDPG; //offset = 96, size = 1
	};

	struct BioFlareColour
	{
		Vector Tint; //offset = 0, size = 12
		Float IntensityThreshold; //offset = 12, size = 4
	};

	struct BioFlareParameters
	{
		BioFlareColour FlareBase; //offset = 0, size = 16
		BioFlareColour FlareHot; //offset = 16, size = 16
		Float FlareTintMultiplier; //offset = 32, size = 4
		Float LineLength; //offset = 36, size = 4
		Float FalloffParameter; //offset = 40, size = 4
	};

	class BioLineBloomEffect: public PostProcessEffect
	{
		DECLARE_PACKAGE_CLASS( BioLineBloomEffect, PostProcessEffect, Engine )

	public:

		BioFlareParameters BaseFlare; //offset = 100, size = 44
		BioFlareParameters OverrideFlare; //offset = 144, size = 44
		Float BlurScale; //offset = 188, size = 4
		Int BlurWidth; //offset = 192, size = 4
	};

	class BioMaterialInstanceEffect: public PostProcessEffect
	{
		DECLARE_PACKAGE_CLASS( BioMaterialInstanceEffect, PostProcessEffect, Engine )

	public:

		MaterialInstance* Material; //offset = 100, size = 4
	};

	class BioSoundNodeWaveStreamingData: public Object
	{
		DECLARE_PACKAGE_CLASS( BioSoundNodeWaveStreamingData, Object, Engine )

	public:

		Array<Byte> StreamingData; //offset = 60, size = 12
	};

	class LightEnvironmentComponent: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( LightEnvironmentComponent, ActorComponent, Engine )

	public:

		Bool bEnabled: 1; //offset = 88, size = 4
		Float LastRenderTime; //offset = 92, size = 4
		Bool bSupportsLightEnvironmentShaders: 1; //offset = 96, size = 4

		void SetEnabled( Bool bNewEnabled );
	};

	class BioStaticLightEnvironmentComponent: public LightEnvironmentComponent
	{
		DECLARE_PACKAGE_CLASS( BioStaticLightEnvironmentComponent, LightEnvironmentComponent, Engine )

	public:
	};

	class BioSWF: public Object
	{
		DECLARE_PACKAGE_CLASS( BioSWF, Object, Engine )

	public:

		Array<Byte> Data; //offset = 60, size = 12
		String SourceFilePath; //offset = 72, size = 12
		String SourceFileTimestamp; //offset = 84, size = 12
	};

	class BioTestFramework: public Object
	{
		DECLARE_PACKAGE_CLASS( BioTestFramework, Object, Engine )

	public:

		Pointer VfTable_FTickableObject; //offset = 60, size = 4
	};

	class BioVersionNumber: public Object
	{
		DECLARE_PACKAGE_CLASS( BioVersionNumber, Object, Engine )

	public:

		Int Value; //offset = 60, size = 4
	};

	enum ECsgOper
	{
		CSG_Active,
		CSG_Add,
		CSG_Subtract,
	};

	struct GeomSelection
	{
		Int Type; //offset = 0, size = 4
		Int Index; //offset = 4, size = 4
		Int SelectionIndex; //offset = 8, size = 4
		Float SelStrength; //offset = 12, size = 4
	};

	class Brush: public Actor
	{
		DECLARE_PACKAGE_CLASS( Brush, Actor, Engine )

	public:

		Byte CsgOper; //offset = 508, size = 1
		Color BrushColor; //offset = 512, size = 4
		Int PolyFlags; //offset = 516, size = 4
		Bool bColored: 1; //offset = 520, size = 4
		Bool bSolidWhenSelected: 1; //offset = 520, size = 4
		Model* Brush; //offset = 524, size = 4
		BrushComponent* BrushComponent; //offset = 528, size = 4
		Array<GeomSelection> SavedSelections; //offset = 532, size = 12
	};


	class Volume: public Brush
	{
		DECLARE_PACKAGE_CLASS( Volume, Brush, Engine )

	public:
		struct AssociatedTouch
		{
			/*
			BeginState
			UnTouch
			Touch
			*/
		};

		Actor* AssociatedActor; //offset = 544, size = 4
		Int LocationPriority; //offset = 548, size = 4
		String LocationName; //offset = 552, size = 12
		Bool bForcePawnWalk: 1; //offset = 564, size = 4
		Bool bProcessAllActors: 1; //offset = 564, size = 4

		void ProcessActorSetVolume( Actor* Other );
		void CollisionChanged();
		void OnToggle( SeqAct_Toggle* Action );
		void DisplayDebug( HUD* HUD, Float out_YL, Float out_YPos );
		String GetLocationStringFor( PlayerReplicationInfo* PRI );
		void PostBeginPlay();
		Bool LineCheck( Vector End, Vector Start, Vector Extent );
		Bool Encompasses( Actor* Other );
	};

	class BlockingVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( BlockingVolume, Volume, Engine )

	public:

		Bool bClampFluid: 1; //offset = 568, size = 4
		Bool bBlockCamera: 1; //offset = 568, size = 4
		Bool bInclusionaryList: 1; //offset = 568, size = 4
		Array<Name> lstAffectedActors; //offset = 572, size = 12
	};

	class BloomEffect: public PostProcessEffect
	{
		DECLARE_PACKAGE_CLASS( BloomEffect, PostProcessEffect, Engine )

	public:
	};

	class BookMark: public Object
	{
		DECLARE_PACKAGE_CLASS( BookMark, Object, Engine )

	public:

		Vector Location; //offset = 60, size = 12
		Rotator Rotation; //offset = 72, size = 12
	};

	struct KCachedConvexData_Mirror
	{
		Array<Int> CachedConvexElements; //offset = 0, size = 12
	};

	class BrushComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( BrushComponent, PrimitiveComponent, Engine )

	public:

		Model* Brush; //offset = 448, size = 4
		KAggregateGeom BrushAggGeom; //offset = 452, size = 52
		Pointer BrushPhysDesc; //offset = 504, size = 4
		KCachedConvexData_Mirror CachedPhysBrushData; //offset = 508, size = 12
		Int CachedPhysBrushDataVersion; //offset = 520, size = 4
	};

	class CameraActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( CameraActor, Actor, Engine )

	public:

		Bool bConstrainAspectRatio: 1; //offset = 508, size = 4
		Bool bCamOverridePostProcess: 1; //offset = 508, size = 4
		Float AspectRatio; //offset = 512, size = 4
		Float FOVAngle; //offset = 516, size = 4
		PostProcessSettings CamOverridePostProcess; //offset = 520, size = 144
		DrawFrustumComponent* DrawFrustum; //offset = 664, size = 4
		StaticMeshComponent* MeshComp; //offset = 668, size = 4

		void DisplayDebug( HUD* HUD, Float out_YL, Float out_YPos, Float XL, Canvas* Canvas );
		void GetCameraView( Float DeltaTime, TPOV OutPOV );
	};

	class CameraAnim: public Object
	{
		DECLARE_PACKAGE_CLASS( CameraAnim, Object, Engine )

	public:

		InterpGroup* CameraInterpGroup; //offset = 60, size = 4
		Float AnimLength; //offset = 64, size = 4
	};

	class CameraAnimInst: public Object
	{
		DECLARE_PACKAGE_CLASS( CameraAnimInst, Object, Engine )

	public:

		CameraAnim* CamAnim; //offset = 60, size = 4
		InterpGroupInst* InterpGroupInst; //offset = 64, size = 4
		Float CurTime; //offset = 68, size = 4
		Bool bLooping: 1; //offset = 72, size = 4
		Bool bFinished: 1; //offset = 72, size = 4
		Bool bBlendingIn: 1; //offset = 72, size = 4
		Bool bBlendingOut: 1; //offset = 72, size = 4
		Float BlendInTime; //offset = 76, size = 4
		Float BlendOutTime; //offset = 80, size = 4
		Float CurBlendInTime; //offset = 84, size = 4
		Float CurBlendOutTime; //offset = 88, size = 4
		Float PlayRate; //offset = 92, size = 4
		Float PlayScale; //offset = 96, size = 4
		Float CurrentBlendWeight; //offset = 100, size = 4
		InterpTrackMove* MoveTrack; //offset = 104, size = 4
		InterpTrackInstMove* MoveInst; //offset = 108, size = 4

		void Stop( Bool bImmediate );
		void AdvanceAnim( Float DeltaTime, Bool bJump );
		void Play( CameraAnim* Anim, Actor* CamActor, Float InRate, Float InScale, Float InBlendInTime, Float InBlendOutTime, Bool bInLoop, Bool bRandomStartTime );
	};

	class CameraConeComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( CameraConeComponent, PrimitiveComponent, Engine )

	public:
	};

	class CameraMode: public Object
	{
		DECLARE_PACKAGE_CLASS( CameraMode, Object, Engine )

	public:

		Bool AllowPawnRotation();
		void ProcessViewRotation( Float DeltaTime, Actor* ViewTarget, Rotator out_ViewRotation, Rotator out_DeltaRot );
	};

	class CameraModifier: public Object
	{
		DECLARE_PACKAGE_CLASS( CameraModifier, Object, Engine )

	public:

		Bool bDisabled: 1; //offset = 60, size = 4
		Bool bPendingDisable: 1; //offset = 60, size = 4
		Bool bDebug: 1; //offset = 60, size = 4
		Camera* CameraOwner; //offset = 64, size = 4

		Bool ProcessViewRotation( Actor* ViewTarget, Float DeltaTime, Rotator out_ViewRotation, Rotator out_DeltaRot );
		void ToggleModifier();
		void EnableModifier();
		void DisableModifier();
		Bool IsDisabled();
		Bool RemoveCameraModifier( Camera* Camera, Int ModifierIdx );
		Bool AddCameraModifier( Camera* Camera );
		Bool ModifyCamera( Camera* Camera, Float DeltaTime, TPOV OutPOV );
		void Init();
	};

	struct CanvasIcon
	{
		Texture2D* Texture; //offset = 0, size = 4
		Float U; //offset = 4, size = 4
		Float V; //offset = 8, size = 4
		Float UL; //offset = 12, size = 4
		Float VL; //offset = 16, size = 4
	};

	class Canvas: public Object
	{
		DECLARE_PACKAGE_CLASS( Canvas, Object, Engine )

	public:

		Font* Font; //offset = 60, size = 4
		Float OrgX; //offset = 64, size = 4
		Float OrgY; //offset = 68, size = 4
		Float ClipX; //offset = 72, size = 4
		Float ClipY; //offset = 76, size = 4
		Float CurX; //offset = 80, size = 4
		Float CurY; //offset = 84, size = 4
		Float CurYL; //offset = 88, size = 4
		Color DrawColor; //offset = 92, size = 4
		Bool bCenter: 1; //offset = 96, size = 4
		Bool bNoSmooth: 1; //offset = 96, size = 4
		Int SizeX; //offset = 100, size = 4
		Int SizeY; //offset = 104, size = 4
		Pointer Canvas; //offset = 108, size = 4
		Pointer SceneView; //offset = 112, size = 4
		Plane ColorModulate; //offset = 116, size = 16
		Texture2D* DefaultTexture; //offset = 132, size = 4

		void DrawTextureDoubleLine( Vector StartPoint, Vector EndPoint, Float Perc, Float Spacing, Float Width, Color LineColor, Color AltLineColor, Texture2D* Tex, Float U, Float V, Float UL, Float VL );
		void DrawTextureLine( Vector StartPoint, Vector EndPoint, Float Perc, Float Width, Color LineColor, Texture2D* LineTexture, Float U, Float V, Float UL, Float VL );
		void Draw2DLine( Float X1, Float Y1, Float X2, Float Y2, Color LineColor );
		void DrawRotatedMaterialTile( MaterialInterface* Mat, Rotator Rotation, Float XL, Float YL, Float U, Float V, Float UL, Float VL, Float AnchorX, Float AnchorY );
		void DrawRotatedTile( Texture2D* Tex, Rotator Rotation, Float XL, Float YL, Float U, Float V, Float UL, Float VL, Float AnchorX, Float AnchorY );
		void SetDrawColor( Byte R, Byte G, Byte B, Byte A );
		void DrawBox( Float Width, Float Height, Int X, Int Y );
		void DrawRect( Float RectX, Float RectY, Texture2D* Tex );
		void DrawIconSection( CanvasIcon Icon, Float X, Float Y, Float UStartPct, Float VStartPct, Float UEndPct, Float VEndPct, Float Scale );
		void DrawIcon( CanvasIcon Icon, Float X, Float Y, Float Scale );
		CanvasIcon MakeIcon( Texture2D* Texture, Float U, Float V, Float UL, Float VL, CanvasIcon Icon );
		void DrawTexture( Texture2D* Tex, Float Scale );
		void SetClip( Float X, Float Y );
		void SetOrigin( Float X, Float Y );
		void SetPos( Float PosX, Float PosY );
		void Reset( Bool bKeepOrigin );
		void WrapStringToArray( String Text, Array<String> OutArray, Float DX, String EOL );
		void DrawColorizedTile( Texture2D* Tex, Float XL, Float YL, Float U, Float V, Float UL, Float VL, LinearColor LColor );
		void DrawTileStretched( Texture2D* Tex, Float XL, Float YL, Float U, Float V, Float UL, Float VL, LinearColor LColor, Bool bStretchHorizontally, Bool bStretchVertically, Float ScalingFactor );
		void PopTransform();
		void PushTranslationMatrix( Vector TranslationVector );
		Vector Project( Vector Location );
		void DrawTileClipped( Texture2D* Tex, Float XL, Float YL, Float U, Float V, Float UL, Float VL );
		void DrawTextRA( String Text, Bool CR, Float XL, Float YL );
		void DrawTextScaled( String Text, Float fXScale, Float fYScale );
		void DrawTextClipped( String Text, Bool bCheckHotKey, Float XScale, Float YScale );
		void DrawText( String Text, Bool CR, Float XScale, Float YScale );
		void TextSize( String String, Float XL, Float YL );
		void StrLen( String String, Float XL, Float YL );
		void DrawMaterialTileClipped( MaterialInterface* Mat, Float XL, Float YL, Float U, Float V, Float UL, Float VL );
		void DrawMaterialTile( MaterialInterface* Mat, Float XL, Float YL, Float U, Float V, Float UL, Float VL );
		void DrawTile( Texture2D* Tex, Float XL, Float YL, Float U, Float V, Float UL, Float VL );
	};

	class CeilingReachSpec: public ReachSpec
	{
		DECLARE_PACKAGE_CLASS( CeilingReachSpec, ReachSpec, Engine )

	public:
	};

	class Download: public Object
	{
		DECLARE_PACKAGE_CLASS( Download, Object, Engine )

	public:
	};

	class ChannelDownload: public Download
	{
		DECLARE_PACKAGE_CLASS( ChannelDownload, Download, Engine )

	public:
	};

	const char* LATENT_MOVETOWARD = 50;

	struct VisiblePortalInfo
	{
		Actor* Source; //offset = 0, size = 4
		Actor* Destination; //offset = 4, size = 4
	};

	class Controller: public Actor
	{
		DECLARE_PACKAGE_CLASS( Controller, Actor, Engine )

	public:
		struct RoundEnded
		{
			/*
			BeginState
			GamePlayEndedState
			ReceiveWarning
			TakeDamage
			KilledBy
			*/
		};

		struct Dead
		{
			/*
			ServerRestartPlayer
			PawnDied
			IsDead
			KilledBy
			*/
		};


		Pawn* Pawn; //offset = 508, size = 4
		PlayerReplicationInfo* PlayerReplicationInfo; //offset = 512, size = 4
		Int PlayerNum; //offset = 516, size = 4
		Controller* NextController; //offset = 520, size = 4
		Bool bIsPlayer: 1; //offset = 524, size = 4
		Bool bGodMode: 1; //offset = 524, size = 4
		Bool bAffectedByHitEffects: 1; //offset = 524, size = 4
		Bool bSoaking: 1; //offset = 524, size = 4
		Bool bSlowerZAcquire: 1; //offset = 524, size = 4
		Bool bForceStrafe: 1; //offset = 524, size = 4
		Bool bNotifyPostLanded: 1; //offset = 524, size = 4
		Bool bNotifyApex: 1; //offset = 524, size = 4
		Bool bAdvancedTactics: 1; //offset = 524, size = 4
		Bool bCanDoSpecial: 1; //offset = 524, size = 4
		Bool bAdjusting: 1; //offset = 524, size = 4
		Bool bPreparingMove: 1; //offset = 524, size = 4
		Bool bLOSflag: 1; //offset = 524, size = 4
		Bool bUsePlayerHearing: 1; //offset = 524, size = 4
		Bool bNotifyFallingHitWall: 1; //offset = 524, size = 4
		Bool bForceDesiredRotation: 1; //offset = 524, size = 4
		Bool bPreciseDestination: 1; //offset = 524, size = 4
		Bool bSeeFriendly: 1; //offset = 524, size = 4
		Bool bUsingPathLanes: 1; //offset = 524, size = 4
		Byte bFire; //offset = 528, size = 1
		Float MinHitWall; //offset = 532, size = 4
		Float MoveTimer; //offset = 536, size = 4
		Actor* MoveTarget; //offset = 540, size = 4
		Vector Destination; //offset = 544, size = 12
		Vector FocalPoint; //offset = 556, size = 12
		Actor* Focus; //offset = 568, size = 4
		Actor* GoalList[4]; //offset = 572, size = 4
		Vector AdjustLoc; //offset = 588, size = 12
		NavigationPoint* StartSpot; //offset = 600, size = 4
		Array<NavigationPoint*> RouteCache; //offset = 604, size = 12
		ReachSpec* CurrentPath; //offset = 616, size = 4
		ReachSpec* NextRoutePath; //offset = 620, size = 4
		Vector CurrentPathDir; //offset = 624, size = 12
		Actor* RouteGoal; //offset = 636, size = 4
		Float RouteDist; //offset = 640, size = 4
		Float LastRouteFind; //offset = 644, size = 4
		InterpActor* PendingMover; //offset = 648, size = 4
		Actor* PendingDoor; //offset = 652, size = 4
		Name PendingDoorState; //offset = 656, size = 8
		Float GroundPitchTime; //offset = 664, size = 4
		Vector ViewX; //offset = 668, size = 12
		Vector ViewY; //offset = 680, size = 12
		Vector ViewZ; //offset = 692, size = 12
		Pawn* ShotTarget; //offset = 704, size = 4
		Actor* LastFailedReach; //offset = 708, size = 4
		Float FailedReachTime; //offset = 712, size = 4
		Vector FailedReachLocation; //offset = 716, size = 12
		Float SightCounter; //offset = 728, size = 4
		Float RespawnPredictionTime; //offset = 732, size = 4
		Float InUseNodeCostMultiplier; //offset = 736, size = 4
		Int HighJumpNodeCostModifier; //offset = 740, size = 4
		Pawn* Enemy; //offset = 744, size = 4
		Actor* Target; //offset = 748, size = 4
		Array<VisiblePortalInfo> VisiblePortals; //offset = 752, size = 12
		Float LaneOffset; //offset = 764, size = 4
		Rotator OldBasedRotation; //offset = 768, size = 12

		void SendMessage( PlayerReplicationInfo* Recipient, Name MessageType, Float Wait, Class* DamageType );
		void CurrentLevelUnloaded();
		Actor* GetRouteGoalAfter( Int RouteIdx );
		Bool IsInCombat();
		Bool IsSpectating();
		Controller* GetKillerController();
		void OnToggleHidden( SeqAct_ToggleHidden* Action );
		void NotifyAddInventory( Inventory* NewItem );
		void OnCauseDamage( SeqAct_CauseDamage* Action );
		Bool NotifyCoverClaimViolation( Controller* NewClaim, CoverLink* Link, Int SlotIdx );
		void NotifyCoverAdjusted();
		void NotifyCoverDisabled( CoverLink* Link, Int SlotIdx );
		void OnToggleAffectedByHitEffects( SeqAct_ToggleAffectedByHitEffects* inAction );
		void OnToggleGodMode( SeqAct_ToggleGodMode* inAction );
		void OnTeleport( SeqAct_Teleport* Action );
		void OnMakeNoise( SeqAct_MakeNoise* Action );
		Bool IsDead();
		String GetHumanReadableName();
		void DisplayDebug( HUD* HUD, Float out_YL, Float out_YPos, Canvas* Canvas );
		void StopLatentExecution();
		Bool InLatentExecution( Int LatentActionNumber );
		void NotifyMissedJump();
		void NotifyJumpApex();
		Bool NotifyBump( Actor* Other, Vector HitNormal );
		void NotifyFallingHitWall( Vector HitNormal, Actor* Wall );
		Bool NotifyHitWall( Vector HitNormal, Actor* Wall );
		Bool NotifyLanded( Vector HitNormal, Actor* FloorActor );
		Bool NotifyHeadVolumeChange( PhysicsVolume* NewVolume );
		void NotifyPhysicsVolumeChange( PhysicsVolume* NewVolume );
		Bool LandingShake();
		Bool IsAimingAt( Actor* ATarget, Float Epsilon, Vector Loc, Rotator Rot );
		void GetActorEyesViewPoint( Vector out_Location, Rotator out_Rotation );
		void GetPlayerViewPoint( Vector out_Location, Rotator out_Rotation );
		Bool HandlePathObstruction( Actor* BlockedBy );
		void UnderLift( LiftCenter* Lift );
		Bool DoorFinished( Name nmState );
		void WaitForDoor( Actor* oDoor, Name nmState );
		Bool MoverFinished();
		void WaitForMover( InterpActor* M );
		Bool AllowDetourTo( NavigationPoint* N );
		void MayFall();
		void EndClimbLadder();
		void LongFall();
		void WaitForLanding( Float waitDuration );
		Bool PickWallAdjust( Vector HitNormal );
		void MoveUnreachable( Vector AttemptedDest, Actor* AttemptedTarget );
		Bool ActorReachable( Actor* anActor );
		Bool PointReachable( Vector aPoint );
		Actor* FindPathToIntercept( Pawn* P, Actor* InRouteGoal, Bool bWeightDetours, Int MaxPathLength, Bool bReturnPartial );
		NavigationPoint* FindRandomDest();
		Actor* FindPathTowardNearest( Class* GoalClass, Bool bWeightDetours, Int MaxPathLength, Bool bReturnPartial );
		Actor* FindPathToward( Actor* anActor, Bool bWeightDetours, Int MaxPathLength, Bool bReturnPartial );
		Actor* FindPathTo( Vector aPoint, Int MaxPathLength, Bool bReturnPartial );
		void FinishRotation();
		void SetupSpecialPathAbilities();
		void BioOnPawnActionStateChanged();
		void MoveToward( Actor* NewTarget, Actor* ViewFocus, Float DestinationOffset, Bool bUseStrafing, Bool bShouldWalk );
		void MoveTo( Vector NewDestination, Actor* ViewFocus, Bool bShouldWalk );
		void EnemyNotVisible();
		void SeeMonster( Pawn* Seen );
		void SeePlayer( Pawn* Seen );
		void HearNoise( Float Loudness, Actor* NoiseMaker, Name NoiseType );
		Pawn* PickTarget( Class* TargetClass, Float bestAim, Float bestDist, Vector FireDir, Vector projStart, Float MaxRange );
		Bool CanSeeByPoints( Vector ViewLocation, Vector TestLocation, Rotator ViewRotation );
		Bool CanSee( Pawn* Other );
		Bool LineOfSightTo( Actor* Other, Vector chkLocation, Bool bTryAlternateTargetLoc );
		void NotifyChangedWeapon( Weapon* PrevWeapon, Weapon* NewWeapon );
		void ClientSetWeapon( Class* WeaponClass, Inventory* Inv );
		void ClientSwitchToBestWeapon( Bool bForceNewWeapon );
		void SwitchToBestWeapon( Bool bForceNewWeapon );
		void ReceiveProjectileWarning( Projectile* Proj );
		void ReceiveWarning( Pawn* Shooter, Float projSpeed, Vector FireDir );
		void CheckNearMiss( Pawn* Shooter, Weapon* W, Vector WeapLoc, Vector LineDir, Vector HitLocation );
		void InstantWarnTarget( Actor* InTarget, Weapon* FiredWeapon, Vector FireDir, Pawn* P );
		Rotator GetAdjustedAimFor( Weapon* W, Vector StartFireLoc );
		void HandlePickup( Inventory* Inv );
		void RoundHasEnded( Actor* EndRoundFocus );
		void StopFiring();
		Bool FireWeaponAt( Actor* inActor );
		Float RatePickup( Actor* PickupHolder, Class* inPickup );
		void WarnProjExplode( Projectile* Proj );
		void NotifyProjLanded( Projectile* Proj );
		void NotifyKilled( Controller* Killer, Controller* Killed, Pawn* KilledPawn );
		void GameHasEnded( Actor* EndGameFocus, Bool bIsWinner );
		void SetCharacter( String inCharacter );
		void ServerGivePawn();
		void ServerRestartPlayer();
		Byte GetTeamNum();
		void InitPlayerReplicationInfo();
		void NotifyTakeHit( Controller* InstigatedBy, Vector HitLocation, Int Damage, Class* DamageType, Vector Momentum );
		void EnemyJustTeleported();
		Bool BeyondFogDistance( Vector ViewPoint, Vector OtherPoint );
		void Restart( Bool bVehicleTransition );
		void CleanupPRI();
		void Destroyed();
		void NotifyPostLanded();
		Bool GamePlayEndedState();
		void PawnDied( Pawn* inPawn, Int idx );
		void UnPossess();
		void UpdateSex();
		void Possess( Pawn* inPawn, Bool bVehicleTransition );
		void OnPossess( SeqAct_Possess* inAction, Pawn* OldPawn, Vehicle* V );
		void ReplicatedEvent( Name VarName );
		void ClientSetRotation( Rotator NewRotation, Bool bResetCamera );
		void ClientSetLocation( Vector NewLocation, Rotator NewRotation );
		void Reset();
		void PostBeginPlay();
		void RouteCache_RemoveIndex( Int InIndex, Int Count );
		void RouteCache_RemoveItem( NavigationPoint* Nav );
		void RouteCache_InsertItem( NavigationPoint* Nav, Int idx );
		void RouteCache_AddItem( NavigationPoint* Nav );
		void RouteCache_Empty();
		Bool IsLocalPlayerController();
	};

	const char* MAXCLIENTUPDATEINTERVAL = 0.2;
	const char* CLIENTADJUSTUPDATECOST = 180;
	const char* MAXVEHICLEPOSITIONERRORSQUARED = 900;
	const char* MAXNEARZEROVELOCITYSQUARED = 9.;
	const char* MAXPOSITIONERRORSQUARED = 3.;

	enum EProgressMessageType
	{
		PMT_Clear,
		PMT_Information,
		PMT_AdminMessage,
	};

	enum EInputMatchAction
	{
		IMA_GreaterThan,
		IMA_LessThan,
	};

	enum EInputTypes
	{
		IT_XAxis,
		IT_YAxis,
	};

	struct DebugTextInfo
	{
		Actor* SrcActor; //offset = 0, size = 4
		Vector SrcActorOffset; //offset = 4, size = 12
		Vector SrcActorDesiredOffset; //offset = 16, size = 12
		String DebugText; //offset = 28, size = 12
		Float TimeRemaining; //offset = 40, size = 4
		Float Duration; //offset = 44, size = 4
		Color TextColor; //offset = 48, size = 4
	};

	struct InputEntry
	{
		Byte Type; //offset = 0, size = 1
		Float Value; //offset = 4, size = 4
		Float TimeDelta; //offset = 8, size = 4
		Byte Action; //offset = 12, size = 1
	};

	struct InputMatchRequest
	{
		Array<InputEntry> Inputs; //offset = 0, size = 12
		Actor* MatchActor; //offset = 12, size = 4
		Name MatchFuncName; //offset = 16, size = 8
		Name FailedFuncName; //offset = 24, size = 8
		Name RequestName; //offset = 32, size = 8
		Int MatchIdx; //offset = 40, size = 4
		Float LastMatchTime; //offset = 44, size = 4
	};

	struct ClientAdjustment
	{
		Float TimeStamp; //offset = 0, size = 4
		Byte newPhysics; //offset = 4, size = 1
		Vector NewLoc; //offset = 8, size = 12
		Vector NewVel; //offset = 20, size = 12
		Actor* NewBase; //offset = 32, size = 4
		Vector NewFloor; //offset = 36, size = 12
		Byte bAckGoodMove; //offset = 48, size = 1
	};

	class PlayerController: public Controller
	{
		DECLARE_PACKAGE_CLASS( PlayerController, Controller, Engine )

	public:
		struct Dead
		{
			/*
			EndState
			BeginState
			Timer
			FindGoodView
			PlayerMove
			ServerMove
			Jump
			Use
			StartFire
			ServerRestartPlayer
			IsDead
			ThrowWeapon
			PrevWeapon
			NextWeapon
			KilledBy
			*/
		};

		struct RoundEnded
		{
			/*
			EndState
			BeginState
			LongClientAdjustPosition
			Timer
			FindGoodView
			ServerMove
			PlayerMove
			StartFire
			ServerRestartGame
			Possess
			Use
			ThrowWeapon
			IsSpectating
			ServerRestartPlayer
			Suicide
			TakeDamage
			KilledBy
			*/
		};

		struct WaitingForPawn
		{
			/*
			EndState
			BeginState
			Timer
			ReplicateMove
			PlayerTick
			LongClientAdjustPosition
			ClientGotoState
			StartFire
			KilledBy
			*/
		};

		struct PlayerWaiting
		{
			/*
			BeginState
			EndState
			StartFire
			ServerRestartPlayer
			ServerChangeTeam
			ServerSuicide
			Suicide
			Jump
			SwitchToBestWeapon
			PrevWeapon
			NextWeapon
			TakeDamage
			*/
		};

		struct Spectating
		{
			/*
			EndState
			BeginState
			StartAltFire
			StartFire
			ThrowWeapon
			Suicide
			ClientRestart
			RestartLevel
			*/
		};

		struct BaseSpectating
		{
			/*
			EndState
			BeginState
			ReplicateMove
			ServerSetSpectatorLocation
			PlayerMove
			ProcessMove
			LimitSpectatorVelocity
			IsSpectating
			*/
		};

		struct PlayerFlying
		{
			/*
			BeginState
			PlayerMove
			*/
		};

		struct PlayerSwimming
		{
			/*
			BeginState
			Timer
			PlayerMove
			ProcessMove
			NotifyPhysicsVolumeChange
			NotifyLanded
			*/
		};

		struct PlayerDriving
		{
			/*
			EndState
			BeginState
			ServerUse
			PlayerMove
			ProcessDrive
			ProcessMove
			*/
		};

		struct PlayerClimbing
		{
			/*
			EndState
			BeginState
			PlayerMove
			ProcessMove
			NotifyPhysicsVolumeChange
			*/
		};

		struct PlayerWalking
		{
			/*
			EndState
			BeginState
			PlayerMove
			ProcessMove
			NotifyPhysicsVolumeChange
			*/
		};


		Player* Player; //offset = 780, size = 4
		Camera* PlayerCamera; //offset = 784, size = 4
		Class* CameraClass; //offset = 788, size = 4
		DebugCameraController* DebugCameraControllerRef; //offset = 792, size = 4
		Class* DebugCameraControllerClass; //offset = 796, size = 4
		Class* PlayerOwnerDataStoreClass; //offset = 800, size = 4
		PlayerOwnerDataStore* CurrentPlayerData; //offset = 804, size = 4
		Bool bFrozen: 1; //offset = 808, size = 4
		Bool bPressedJump: 1; //offset = 808, size = 4
		Bool bDoubleJump: 1; //offset = 808, size = 4
		Bool bUpdatePosition: 1; //offset = 808, size = 4
		Bool bUpdating: 1; //offset = 808, size = 4
		Bool bNeverSwitchOnPickup: 1; //offset = 808, size = 4
		Bool bCheatFlying: 1; //offset = 808, size = 4
		Bool bCameraPositionLocked: 1; //offset = 808, size = 4
		Bool bShortConnectTimeOut: 1; //offset = 808, size = 4
		Bool bPendingDestroy: 1; //offset = 808, size = 4
		Bool bWasSpeedHack: 1; //offset = 808, size = 4
		Bool bWasSaturated: 1; //offset = 808, size = 4
		Bool bDynamicNetSpeed: 1; //offset = 808, size = 4
		Bool bAimingHelp: 1; //offset = 808, size = 4
		Bool bCinematicMode: 1; //offset = 808, size = 4
		Bool bCinemaDisableInputMove: 1; //offset = 808, size = 4
		Bool bCinemaDisableInputLook: 1; //offset = 808, size = 4
		Bool bReplicateAllPawns: 1; //offset = 808, size = 4
		Bool bIsUsingStreamingVolumes: 1; //offset = 808, size = 4
		Bool bIsExternalUIOpen: 1; //offset = 808, size = 4
		Bool bIsControllerConnected: 1; //offset = 808, size = 4
		Bool bCheckSoundOcclusion: 1; //offset = 808, size = 4
		Bool bLogHearSoundOverflow: 1; //offset = 808, size = 4
		Bool bCheckRelevancyThroughPortals: 1; //offset = 808, size = 4
		Float MaxResponseTime; //offset = 812, size = 4
		Float WaitDelay; //offset = 816, size = 4
		Pawn* AcknowledgedPawn; //offset = 820, size = 4
		Byte DoubleClickDir; //offset = 824, size = 1
		Byte bIgnoreMoveInput; //offset = 825, size = 1
		Byte bIgnoreLookInput; //offset = 826, size = 1
		Byte bRun; //offset = 827, size = 1
		Byte bDuck; //offset = 828, size = 1
		Byte NetPlayerIndex; //offset = 829, size = 1
		Actor* ViewTarget; //offset = 832, size = 4
		PlayerReplicationInfo* RealViewTarget; //offset = 836, size = 4
		Float FOVAngle; //offset = 840, size = 4
		Float DesiredFOV; //offset = 844, size = 4
		Float DefaultFOV; //offset = 848, size = 4
		Float LODDistanceFactor; //offset = 852, size = 4
		Rotator TargetViewRotation; //offset = 856, size = 12
		Float TargetEyeHeight; //offset = 868, size = 4
		Rotator BlendedTargetViewRotation; //offset = 872, size = 12
		HUD* myHUD; //offset = 884, size = 4
		Class* SavedMoveClass; //offset = 888, size = 4
		SavedMove* SavedMoves; //offset = 892, size = 4
		SavedMove* FreeMoves; //offset = 896, size = 4
		SavedMove* PendingMove; //offset = 900, size = 4
		Vector LastAckedAccel; //offset = 904, size = 12
		Float CurrentTimeStamp; //offset = 916, size = 4
		Float LastUpdateTime; //offset = 920, size = 4
		Float ServerTimeStamp; //offset = 924, size = 4
		Float TimeMargin; //offset = 928, size = 4
		Float ClientUpdateTime; //offset = 932, size = 4
		Float MaxTimeMargin; //offset = 936, size = 4
		Float LastActiveTime; //offset = 940, size = 4
		Int ClientCap; //offset = 944, size = 4
		Float DynamicPingThreshold; //offset = 948, size = 4
		Float LastPingUpdate; //offset = 952, size = 4
		Float OldPing; //offset = 956, size = 4
		Float LastSpeedHackLog; //offset = 960, size = 4
		ClientAdjustment PendingAdjustment; //offset = 964, size = 52
		String ProgressMessage[2]; //offset = 1016, size = 12
		Float ProgressTimeOut; //offset = 1040, size = 4
		String QuickSaveString; //offset = 1044, size = 12
		String NoPauseMessage; //offset = 1056, size = 12
		String ViewingFrom; //offset = 1068, size = 12
		String OwnCamera; //offset = 1080, size = 12
		Int GroundPitch; //offset = 1092, size = 4
		Vector OldFloor; //offset = 1096, size = 12
		CheatManager* CheatManager; //offset = 1108, size = 4
		Class* CheatClass; //offset = 1112, size = 4
		PlayerInput* PlayerInput; //offset = 1116, size = 4
		Class* InputClass; //offset = 1120, size = 4
		Vector FailedPathStart; //offset = 1124, size = 12
		CylinderComponent* CylinderComponent; //offset = 1136, size = 4
		String ForceFeedbackManagerClassName; //offset = 1140, size = 12
		ForceFeedbackManager* ForceFeedbackManager; //offset = 1152, size = 4
		Array<Interaction*> Interactions; //offset = 1156, size = 12
		Array<UniqueNetId> VoiceMuteList; //offset = 1168, size = 12
		Array<UniqueNetId> GameplayVoiceMuteList; //offset = 1180, size = 12
		Array<UniqueNetId> VoicePacketFilter; //offset = 1192, size = 12
		OnlineSubsystem* OnlineSub; //offset = 1204, size = 4
		VoiceInterface VoiceInterface; //offset = 1208, size = 8
		UIDataStore_OnlinePlayerData* OnlinePlayerData; //offset = 1216, size = 4
		Float InteractDistance; //offset = 1220, size = 4
		Array<InputMatchRequest> InputRequests; //offset = 1224, size = 12
		Float LastBroadcastTime; //offset = 1236, size = 4
		String LastBroadcastString[4]; //offset = 1240, size = 12
		Array<Name> PendingMapChangeLevelNames; //offset = 1288, size = 12
		CoverReplicator* MyCoverReplicator; //offset = 1300, size = 4
		BioSFManager* m_oCachedScaleFormManager; //offset = 1304, size = 4
		Array<DebugTextInfo> DebugTextList; //offset = 1308, size = 12
		Float SpectatorCameraSpeed; //offset = 1320, size = 4
		NetConnection* PendingSwapConnection; //offset = 1324, size = 4
		Float MinRespawnDelay; //offset = 1328, size = 4
		Int MaxConcurrentHearSounds; //offset = 1332, size = 4
		Array<AudioComponent*> HearSoundActiveComponents; //offset = 1336, size = 12
		Array<AudioComponent*> HearSoundPoolComponents; //offset = 1348, size = 12
		Array<Actor*> HiddenActors; //offset = 1360, size = 12
		Array<String> AutomatedMapTestingList; //offset = 1372, size = 12
		Int NumAutomatedMapTestingCycles; //offset = 1384, size = 4
		__CanUnpause__Delegate __CanUnpause__Delegate; //offset = 1388, size = 12

		void PathClear();
		void PathChild( Int Cnt );
		void PathStep( Int Cnt );
		void SoakPause( Pawn* P );
		void IncrementAutomatedTestingMapIndex();
		void IncrementNumberOfMatchesPlayed();
		Bool CanViewUserCreatedContent(, LocalPlayer* LocPlayer );
		void ServerRegisterClientStatGuid( String StatGuid );
		void OnRegisterHostStatGuidComplete( Bool bWasSuccessful, String StatGuid );
		void ClientRegisterHostStatGuid( String StatGuid );
		void EnableDebugCamera( Player* P, Vector eyeLoc, Rotator eyeRot );
		void RemoveDebugText( Actor* SrcActor, Int idx );
		void AddDebugText( String DebugText, Actor* SrcActor, Float Duration, Vector Offset, Vector DesiredOffset, Color TextColor, Bool bSkipOverwriteCheck );
		void DrawDebugTextList( Canvas* Canvas, Float RenderDelta, Vector cameraLoc, Vector ScreenLoc, Vector Offset, Rotator cameraRot, Int idx );
		void SendToConsole( String Command );
		void ConsoleKey( Name Key );
		void OnDestroy( SeqAct_Destroy* Action );
		void ClientAdjustMusicTrackVolume( SeqAct_CrossFadeMusicTracks* MusicAction, Float AdjustVolumeDuration, Float AdjustVolumeLevel );
		void ClientFadeOutMusicTrack( SeqAct_CrossFadeMusicTracks* MusicAction, Float FadeOutTime, Float FadeOutVolumeLevel );
		void ClientCrossFadeMusicTrack_PlayTrack( SeqAct_CrossFadeMusicTracks* MusicAction, MusicTrackStruct MusicTrack );
		void ServerSendMusicInfo();
		void ClientStartNetworkedVoice( LocalPlayer* LocPlayer );
		void ClientStopNetworkedVoice( LocalPlayer* LocPlayer );
		void ClientSetHostUniqueId( UniqueNetId InHostId );
		void ClientWriteOnlinePlayerScores( GameReplicationInfo* GRI, Int Index, Array<OnlinePlayerScore> PlayerScores, UniqueNetId ZeroUniqueId, Bool bIsTeamGame, Int ScoreIndex );
		void ClientArbitratedMatchEnded();
		void NotifyNotEnoughSpaceInInvite();
		void NotifyNotAllPlayersCanJoinInvite();
		void NotifyInviteFailed();
		void OnInviteJoinComplete( Bool bWasSuccessful, String URL, String ConnectPassword );
		void OnDestroyForInviteComplete( Bool bWasSuccessful );
		void OnEndForInviteComplete( Bool bWasSuccessful );
		void ClearInviteDelegates();
		Bool CanAllPlayersPlayOnline(, PlayerController* PC, LocalPlayer* LocPlayer );
		Bool InviteHasEnoughSpace( OnlineGameSettings* InviteSettings, Int NumLocalPlayers, PlayerController* PC );
		void OnGameInviteAccepted( OnlineGameSettings* GameInviteSettings );
		void ServerWritenArbitrationEndGameData();
		void ClientWriteArbitrationEndGameData( Class* OnlineStatsWriteClass );
		void ServerRegisteredForArbitration( Bool bWasSuccessful );
		void OnArbitrationRegisterComplete( Bool bWasSuccessful );
		void ClientRegisterForArbitration();
		void ClientWasKicked();
		void NotifyConnectionError( String Message, String Title );
		Bool IsShowingSubtitles();
		void SetShowSubtitles( Bool bValue );
		void NotifyDirectorControl( Bool bNowControlling );
		void ServerUnmutePlayer( UniqueNetId PlayerNetId, PlayerController* Other, Int RemoveIndex );
		void ServerMutePlayer( UniqueNetId PlayerNetId, PlayerController* Other );
		void GameplayUnmutePlayer( UniqueNetId PlayerNetId, Int RemoveIndex, PlayerController* Other );
		void GameplayMutePlayer( UniqueNetId PlayerNetId );
		void ClientUnmutePlayer( UniqueNetId PlayerNetId, LocalPlayer* LocPlayer );
		void ClientMutePlayer( UniqueNetId PlayerNetId, LocalPlayer* LocPlayer );
		PlayerController* GetPlayerControllerFromNetId( UniqueNetId PlayerNetId );
		void ClientSetOnlineStatus();
		void SeamlessTravelFrom( PlayerController* OldPC );
		void SeamlessTravelTo( PlayerController* NewPC );
		void GetSeamlessTravelActorList( Bool bToEntry, Array<Actor*> ActorList );
		Bool IsPlayerMuted( UniqueNetId Sender );
		UIInteraction* GetUIController(, LocalPlayer* LP, UIInteraction* Result );
		void SaveActorConfig( Name actorName, Actor* chkActor );
		void SaveClassConfig( String ClassName, Class* SaveClass );
		void ClientSetBlockOnAsyncLoading();
		void ClientFlushLevelStreaming();
		void ClientCommitMapChange( Bool bShouldSkipLevelStartupEvent, Bool bShouldSkipLevelBeginningEvent );
		void DelayedPrepareMapChange();
		void ClientPrepareMapChange( Name LevelName, Bool bFirst, Bool bLast, PlayerController* PC );
		void ServerUpdateLevelVisibility( Name PackageName, Bool bIsVisible );
		void ClientUpdateLevelStreamingStatus( Name PackageName, Bool bNewShouldBeLoaded, Bool bNewShouldBeVisible, Bool bNewShouldBlockOnLoad );
		void LevelStreamingStatusChanged( LevelStreaming* LevelObject, Bool bNewShouldBeLoaded, Bool bNewShouldBeVisible, Bool bNewShouldBlockOnLoad );
		void ClientForceGarbageCollection();
		void OnConsoleCommand( SeqAct_ConsoleCommand* inAction );
		void ResetPlayerMovementInput();
		Bool IsLookInputIgnored();
		void IgnoreLookInput( Bool bNewLookInput );
		Bool IsMoveInputIgnored();
		void IgnoreMoveInput( Bool bNewMoveInput );
		void ClientSetCinematicMode( Bool bInCinematicMode, Bool bAffectsMovement, Bool bAffectsTurning, Bool bAffectsHUD );
		void SetCinematicMode( Bool bInCinematicMode, Bool bHidePlayer, Bool bAffectsHUD, Bool bAffectsMovement, Bool bAffectsTurning, Bool bAffectsButtons, Bool bAdjustMoveInput, Bool bAdjustLookInput );
		void OnToggleCinematicMode( SeqAct_ToggleCinematicMode* Action, Bool bNewCinematicMode );
		void CameraShake( Float Duration, Vector newRotAmplitude, Vector newRotFrequency, Vector newLocAmplitude, Vector newLocFrequency, Float newFOVAmplitude, Float newFOVFrequency );
		void ClientStopForceFeedbackWaveform( ForceFeedbackWaveform* FFWaveform );
		void ClientPlayForceFeedbackWaveform( ForceFeedbackWaveform* FFWaveform );
		void OnForceFeedback( SeqAct_ForceFeedback* Action );
		void NotifyTakeHit( Controller* InstigatedBy, Vector HitLocation, Int Damage, Class* DamageType, Vector Momentum );
		void ListCE();
		void ListConsoleEvents();
		void CE( Name EventName );
		void CauseEvent( Name EventName );
		void ServerCauseEvent( Name EventName, Array<SequenceObject*> AllConsoleEvents, SeqEvent_Console* ConsoleEvt, Sequence* GameSeq, Int idx, Bool bFoundEvt );
		void OnToggleHUD( SeqAct_ToggleHUD* inAction );
		void OnSetCameraTarget( SeqAct_SetCameraTarget* inAction, Actor* RealCameraTarget );
		void DisplayDebug( HUD* HUD, Float out_YL, Float out_YPos );
		void ClientIgnoreLookInput( Bool bIgnore );
		void ClientIgnoreMoveInput( Bool bIgnore );
		void OnToggleInput( SeqAct_ToggleInput* inAction, Bool bNewValue );
		void DrawHUD( HUD* H );
		Bool CanRestartPlayer();
		void ServerViewSelf();
		void ViewAPlayer( Int Dir, Int I, Int CurrentIndex, Int NewIndex, PlayerReplicationInfo* PRI, Bool bSuccess );
		void ServerViewPrevPlayer();
		void ServerViewNextPlayer();
		void ServerSetSpectatorLocation( Vector NewLoc );
		Bool IsSpectating();
		void CheckJumpOrDuck();
		void ClearDoubleClick();
		Rotator LimitViewRotation( Rotator ViewRotation, Float ViewPitchMin, Float ViewPitchMax );
		void ProcessViewRotation( Float DeltaTime, Rotator out_ViewRotation, Rotator DeltaRot );
		void UpdateRotation( Float DeltaTime, Rotator DeltaRot, Rotator NewRotation, Rotator ViewRotation );
		void ViewShake( Float DeltaTime );
		void GetPlayerViewPoint( Vector out_Location, Rotator out_Rotation, Actor* TheViewTarget );
		void SpawnPlayerCamera();
		void ServerVerifyViewTarget( Actor* TheViewTarget );
		Actor* GetViewTarget();
		void ClientSetViewTarget( Actor* A, ViewTargetTransitionParams TransitionParams );
		void SetViewTarget( Actor* NewViewTarget, ViewTargetTransitionParams TransitionParams );
		Bool IsLocalPlayerController();
		Float GetFOVAngle();
		void AdjustFOV( Float DeltaTime );
		Bool NotifyLanded( Vector HitNormal, Actor* FloorActor );
		Float AimHelpDot( Bool bInstantHit );
		Rotator GetAdjustedAimFor( Weapon* W, Vector StartFireLoc, Vector FireDir, Vector AimSpot, Vector HitLocation, Vector HitNormal, Vector OldAim, Vector AimOffset, Actor* BestTarget, Actor* HitActor, Float bestAim, Float bestDist, Bool bNoZAdjust, Bool bInstantHit, Rotator BaseAimRot, Rotator AimRot );
		void CameraLookAtFinished( SeqAct_CameraLookAt* Action );
		Bool AimingHelp( Bool bInstantHit );
		void PlayerMove( Float DeltaTime );
		void PlayerTick( Float DeltaTime );
		void NotifyChangedWeapon( Weapon* PreviousWeapon, Weapon* NewWeapon );
		void ClientGameEnded( Actor* EndGameFocus, Bool bIsWinner );
		void GameHasEnded( Actor* EndGameFocus, Bool bIsWinner );
		void ClientRestart( Pawn* NewPawn );
		void EnterStartState( Name NewState );
		Bool HasClientLoadedCurrentWorld();
		void NotifyLoadedWorld( Name WorldPackageName, Bool bFinalDest, PlayerStart* P, Rotator SpawnRotation );
		void ServerNotifyLoadedWorld( Name WorldPackageName );
		void Restart( Bool bVehicleTransition );
		void ClientSetProgressTime( Float T );
		void SetProgressTime( Float T );
		void ClientSetProgressMessage( Byte MessageType, String Message, String Title );
		void SetProgressMessage( Byte MessageType, String Message, String Title );
		void ClientClearProgressMessages( Int I );
		void ClearProgressMessages();
		void SwitchLevel( String URL );
		void ServerChangeTeam( Int N, TeamInfo* OldTeam );
		void ChangeTeam( String TeamName, Int N );
		void SwitchTeam();
		void ServerChangeName( String S );
		void SetName( String S, String NewName, LocalPlayer* LocPlayer );
		void ServerSuicide();
		void Suicide();
		Bool TriggerInteracted(, Actor* A, Int idx, Float Weight, Bool bInserted, Vector cameraLoc, Rotator cameraRot, Array<Trigger*> useList, Array<Actor*> sortedList, Array<Float> weightList );
		Bool FindVehicleToDrive(, Vehicle* V, Vehicle* Best, Vector ViewDir, Vector PawnLoc2D, Vector VLoc2D, Float NewDot, Float BestDot );
		Bool PerformedUseAction();
		void ServerUse();
		void Use();
		void GetTriggerUseList( Float interactDistanceToCheck, Float crosshairDist, Float minDot, Bool bUsuableOnly, Array<Trigger*> out_useList, Int idx, Vector cameraLoc, Rotator cameraRot, Trigger* checkTrigger, SeqEvent_Used* UseSeq );
		void StopAltFire( Byte FireModeNum );
		void StartAltFire( Byte FireModeNum );
		void StopFire( Byte FireModeNum );
		void StartFire( Byte FireModeNum );
		void NextWeapon();
		void PrevWeapon();
		void ServerThrowWeapon();
		void ThrowWeapon();
		void UTrace();
		void ServerUTrace();
		void ConditionalPause( Bool bDesiredPauseState );
		void ShowMenu();
		void ServerPause();
		void Pause();
		Bool IsPaused();
		void DebugPause();
		Bool SetPause( Bool bPause, CanUnpauseDelegate CanUnpauseDelegate, Bool bResult );
		Bool CanUnpause();
		void QuickLoad();
		void QuickSave();
		void LocalTravel( String URL );
		void RestartLevel();
		void ServerSpeech( Name Type, Int Index, String Callsign );
		void Speech( Name Type, Int Index, String Callsign );
		void ServerRestartGame();
		void HandleWalking();
		void CallServerMove( SavedMove* NewMove, Vector ClientLoc, Byte ClientRoll, Int View, SavedMove* OldMove, Vector BuildAccel, Byte OldAccelX, Byte OldAccelY, Byte OldAccelZ );
		void ReplicateMove( Float DeltaTime, Vector newAccel, Byte DoubleClickMove, Rotator DeltaRot, SavedMove* NewMove, SavedMove* OldMove, SavedMove* AlmostLastMove, SavedMove* LastMove, Byte ClientRoll, Float NetMoveDelta );
		Int CompressAccel( Int C );
		SavedMove* GetFreeMove(, SavedMove* S, SavedMove* first, Int I );
		void ClientUpdatePosition( SavedMove* CurrentMove, Int realbRun, Int realbDuck, Bool bRealJump, Bool bRealPreciseDestination );
		void ClearAckedMoves( SavedMove* CurrentMove );
		void ServerUpdatePing( Int NewPing );
		void UpdateStateFromAdjustment( Name NewState );
		void LongClientAdjustPosition( Float TimeStamp, Name NewState, Byte newPhysics, Float NewLocX, Float NewLocY, Float NewLocZ, Float NewVelX, Float NewVelY, Float NewVelZ, Actor* NewBase, Float NewFloorX, Float NewFloorY, Float NewFloorZ, Vector NewLocation, Vector NewVelocity, Vector NewFloor, Actor* MoveActor, SavedMove* CurrentMove, Actor* TheViewTarget );
		void UpdatePing( Float TimeStamp );
		void ServerSetNetSpeed( Int NewSpeed );
		void ClientAdjustPosition( Float TimeStamp, Name NewState, Byte newPhysics, Float NewLocX, Float NewLocY, Float NewLocZ, Float NewVelX, Float NewVelY, Float NewVelZ, Actor* NewBase, Vector Floor );
		void ClientAckGoodMove( Float TimeStamp );
		void ClientCapBandwidth( Int Cap );
		void ShortClientAdjustPosition( Float TimeStamp, Name NewState, Byte newPhysics, Float NewLocX, Float NewLocY, Float NewLocZ, Actor* NewBase, Vector Floor );
		void VeryShortClientAdjustPosition( Float TimeStamp, Float NewLocX, Float NewLocY, Float NewLocZ, Actor* NewBase, Vector Floor );
		void MoveAutonomous( Float DeltaTime, Byte CompressedFlags, Vector newAccel, Rotator DeltaRot, Byte DoubleClickMove );
		void ProcessMove( Float DeltaTime, Vector newAccel, Byte DoubleClickMove, Rotator DeltaRot );
		void ProcessDrive( Float InForward, Float InStrafe, Float InUp, Bool InJump );
		void ServerDrive( Float InForward, Float InStrafe, Float aUp, Bool InJump, Int View, Rotator ViewRotation );
		void SendClientAdjustment();
		void ServerMove( Float TimeStamp, Vector InAccel, Vector ClientLoc, Byte MoveFlags, Byte ClientRoll, Int View, Float DeltaTime, Float clientErr, Rotator DeltaRot, Rotator Rot, Rotator ViewRot, Vector Accel, Vector LocDiff, Int maxPitch, Int ViewPitch, Int ViewYaw );
		void OldServerMove( Float OldTimeStamp, Byte OldAccelX, Byte OldAccelY, Byte OldAccelZ, Byte OldMoveFlags, Vector Accel );
		void DualServerMove( Float TimeStamp0, Vector InAccel0, Byte PendingFlags, Int View0, Float TimeStamp, Vector InAccel, Vector ClientLoc, Byte NewFlags, Byte ClientRoll, Int View );
		void ForceDeathUpdate();
		void ClientVoiceMessage( PlayerReplicationInfo* Sender, PlayerReplicationInfo* Recipient, Name MessageType, Byte messageID );
		Bool UsingFirstPersonCamera();
		void ResetCameraMode();
		void SetCameraMode( Name NewCamMode );
		void ClientSetCameraMode( Name NewCamMode );
		void ServerCamera( Name NewMode );
		void Camera( Name NewMode );
		void PreClientTravel();
		void ServerTeamSay( String msg );
		void TeamSay( String msg );
		void ServerSay( String msg, PlayerController* PC );
		void Say( String msg );
		Bool AllowTextMessage( String msg, Int I );
		void ServerMutate( String MutateString );
		void Mutate( String MutateString );
		void FOV( Float F );
		void ResetFOV();
		void SetFOV( Float NewFOV );
		void FixFOV();
		void Destroyed( Vehicle* DrivenVehicle, Pawn* Driver );
		void ClearOnlineDelegates( LocalPlayer* LP );
		void RegisterOnlineDelegates();
		void PlayBeepSound();
		Bool IsFinalReleaseBuild();
		void TeamMessage( PlayerReplicationInfo* PRI, String S, Name Type, Float MsgLifeTime );
		void ClientMessage( String S, Name Type, Float MsgLifeTime );
		void ClientPlayActorFaceFXAnim( Actor* SourceActor, FaceFXAnimSet* AnimSet, String GroupName, String SeqName );
		void Kismet_ClientStopSound( SoundCue* ASound, Actor* SourceActor, Float FadeOutTime, AudioComponent* AC, AudioComponent* CheckAC );
		void Kismet_ClientPlaySound( SoundCue* ASound, Actor* SourceActor, Float VolumeMultiplier, Float PitchMultiplier, Float FadeInTime, Bool bSuppressSubtitles, Bool bSuppressSpatialization, AudioComponent* AC );
		void ClientHearSound( SoundCue* ASound, Actor* SourceActor, Vector SourceLocation, Bool bStopWhenOwnerDestroyed, Bool bIsOccluded, AudioComponent* AC );
		void WwiseClientStopSound( WwiseBaseSoundObject* Sound, Actor* SourceActor );
		void WwiseClientHearSound( WwiseBaseSoundObject* Sound, Actor* SourceActor, Vector SourceLocation, Bool bStopWhenOwnerDestroyed, Bool bIsOccluded );
		AudioComponent* GetPooledAudioComponent( SoundCue* ASound, Actor* SourceActor, Bool bStopWhenOwnerDestroyed, Bool bUseLocation, Vector SourceLocation );
		void HearSoundFinished( AudioComponent* AC );
		void ClientPlaySound( SoundCue* ASound );
		void ReceiveLocalizedMessage( Class* Message, Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject );
		void CleanupPRI();
		void HandlePickup( Inventory* Inv );
		void ClientSetHUD( Class* newHUDType, Class* newScoringType );
		void PawnDied( Pawn* P );
		void UnPossess();
		void ServerAcknowledgePossession( Pawn* P );
		void AcknowledgePossession( Pawn* P );
		void Possess( Pawn* aPawn, Bool bVehicleTransition, Actor* A, Int I, SeqEvent_Touch* TouchEvent );
		void GivePawn( Pawn* NewPawn );
		void AskForPawn();
		void ClientGotoState( Name NewState, Name NewLabel );
		Bool IsMouseAvailable();
		Bool IsKeyboardAvailable();
		void SetUseTiltForwardAndBack( Bool bActive );
		void SetOnlyUseControllerTiltInput( Bool bActive );
		void SetControllerTiltActive( Bool bActive );
		void SetControllerTiltDesiredIfAvailable( Bool bActive );
		Bool IsControllerTiltActive();
		Float GetRumbleScale(, Float retval );
		void SetRumbleScale( Float ScaleBy );
		void SetPlayerDataProvider( PlayerDataProvider* DataProvider );
		void UnregisterStandardPlayerDataStores( LocalPlayer* LP, DataStoreClient* DataStoreManager, Array<Class*> PlayerDataStoreClasses, Class* PlayerDataStoreClass, UIDataStore* PlayerDataStore, Int ClassIndex );
		void UnregisterPlayerDataStores( LocalPlayer* LP, DataStoreClient* DataStoreManager, UIDataStore_OnlinePlayerData* OnlinePlayerDataStore );
		void RegisterStandardPlayerDataStores( LocalPlayer* LP, DataStoreClient* DataStoreManager, Array<Class*> PlayerDataStoreClasses, Class* PlayerDataStoreClass, UIDataStore* PlayerDataStore, Int ClassIndex );
		void RegisterCustomPlayerDataStores( LocalPlayer* LP, DataStoreClient* DataStoreManager, Class* PlayerDataStoreClass );
		void RegisterPlayerDataStores();
		void ClientInitializeDataStores();
		void ServerSetUniquePlayerId( UniqueNetId UniqueId, Bool bWasInvited, UniqueNetId ZeroId );
		void InitUniquePlayerId( LocalPlayer* LocPlayer, OnlineGameSettings* GameSettings );
		void ReplicatedEvent( Name VarName );
		void InitInputSystem( Class* FFManagerClass, Int I, Sequence* GameSeq, Array<SequenceObject*> AllInterpActions );
		OnlineSubsystem* GetOnlineSubsystem();
		void PostControllerIdChange( LocalPlayer* LP );
		void PreControllerIdChange( LocalPlayer* LP );
		void CleanOutSavedMoves();
		void ClientReset();
		void Reset( Vehicle* DrivenVehicle );
		void SpawnDefaultHUD();
		void EnableCheats();
		void AddCheats();
		void KickWarning();
		void ServerGivePawn();
		void ServerShortTimeout( Actor* A );
		void ResetTimeMargin();
		void PreRender( Canvas* Canvas );
		void ReceivedPlayer();
		void PostBeginPlay();
		CoverReplicator* SpawnCoverReplicator();
		Bool CanUnpauseControllerConnected();
		void OnControllerChanged( Int ControllerId, Bool bIsConnected, LocalPlayer* LocPlayer );
		void FellOutOfWorld( Class* dmgType );
		Bool CanUnpauseExternalUI();
		void OnExternalUIChanged( Bool bIsOpening );
		void CleanUpAudioComponents();
		Int FindStairRotation( Float DeltaTime );
		Bool CheckSpeedHack( Float DeltaTime );
		void ServerProcessConvolve( String C, Int H );
		void ClientConvolve( String C, Int H );
		void SetAudioGroupVolume( Name GroupName, Float Volume );
		void SetAllowMatureLanguage( Bool bAllowMatureLanguge );
		String PasteFromClipboard();
		void CopyToClipboard( String Text );
		String GetDefaultURL( String Option );
		void UpdateURL( String NewOption, String NewValue, Bool bSave1Default );
		void ClientTravel( String URL, Byte TravelType, Bool bSeamless );
		String ConsoleCommand( String Command, Bool bWriteToLog );
		String GetServerNetworkAddress();
		String GetPlayerNetworkAddress();
		void SetNetSpeed( Int NewSpeed );
		BioSFManager* GetScaleFormManager();
		void ClientDrawCoordinateSystem( Vector AxisLoc, Rotator AxisRot, Float Scale, Bool bPersistentLines );
	};

	class CheatManager: public Object
	{
		DECLARE_PACKAGE_CLASS( CheatManager, Object, Engine )

	public:

		void TestLevel( Actor* A, Actor* Found, Bool bFoundErrors );
		void ToggleDebugCamera( PlayerController* PC, DebugCameraController* DCC );
		void StreamLevelOut( Name PackageName );
		void OnlyLoadLevel( Name PackageName );
		void StreamLevelIn( Name PackageName );
		void SetMass( Float F );
		void SetLevelStreamingStatus( Name PackageName, Bool bShouldBeLoaded, Bool bShouldBeVisible, PlayerController* PC, Int I );
		void AllWeapons();
		void Loaded();
		void ViewClass( Class* aClass, Actor* Other, Actor* first, Bool bFound );
		void ViewBot( Actor* first, Bool bFound, AIController* C );
		void ViewFlag( AIController* C );
		void ViewActor( Name actorName, Actor* A );
		void ViewPlayer( String S, Controller* P );
		void ViewSelf( Bool bQuiet );
		void RememberSpot();
		void PlayersOnly();
		Weapon* GiveWeapon( String WeaponClassStr, Weapon* Weap, Class* WeaponClass );
		void Summon( String ClassName, Class* NewClass, Vector SpawnLoc );
		void Avatar( Name ClassName, Pawn* P, Pawn* TargetPawn, Pawn* FirstPawn, Pawn* OldPawn, Bool bPickNextPawn );
		void KillPawns();
		void KillAllPawns( Class* aClass, Pawn* P );
		void KillAll( Class* aClass, Actor* A );
		void SetSpeed( Float F );
		void SetGravity( Float F );
		void SetJumpZ( Float F );
		void SloMo( Float T );
		void AffectedByHitEffects();
		void God( BioRemoteLogger* GLogger );
		void AllAmmo();
		void Ghost( BioRemoteLogger* GLogger );
		void Walk();
		void Fly();
		void Amphibious();
		void EndPath();
		void ChangeSize( Float F );
		Rotator GetFRotatorFromString( String InStr );
		Vector GetFVectorFromString( String InStr );
		void BugIt( String ScreenShotDescription, Vector ViewLocation, Rotator ViewRotation );
		void BugItWorker( Vector TheLocation, Rotator TheRotation );
		void BugItGoString( String TheLocation, String TheRotation );
		void BugItGo( Float X, Float Y, Float Z, Int Pitch, Int Yaw, Int Roll, Vector TheLocation, Rotator TheRotation );
		void Teleport( Actor* HitActor, Vector HitNormal, Vector HitLocation, Vector ViewLocation, Rotator ViewRotation );
		void KillViewedActor();
		void WriteToLog( String Param );
		void FreezeFrame( Float delay );
		void ListDynamicActors();
	};

	class Player: public Object
	{
		DECLARE_PACKAGE_CLASS( Player, Object, Engine )

	public:

		Pointer VfTable_FExec; //offset = 60, size = 4
		PlayerController* Actor; //offset = 64, size = 4
		Int CurrentNetSpeed; //offset = 68, size = 4
		Int ConfiguredInternetSpeed; //offset = 72, size = 4
		Int ConfiguredLanSpeed; //offset = 76, size = 4
		Float PP_DesaturationMultiplier; //offset = 80, size = 4
		Float PP_HighlightsMultiplier; //offset = 84, size = 4
		Float PP_MidTonesMultiplier; //offset = 88, size = 4
		Float PP_ShadowsMultiplier; //offset = 92, size = 4

		void SwitchController( PlayerController* PC );
	};

	class NetConnection: public Player
	{
		DECLARE_PACKAGE_CLASS( NetConnection, Player, Engine )

	public:
	};

	class ChildConnection: public NetConnection
	{
		DECLARE_PACKAGE_CLASS( ChildConnection, NetConnection, Engine )

	public:
	};

	class Client: public Object
	{
		DECLARE_PACKAGE_CLASS( Client, Object, Engine )

	public:

		Float ButtonRepeatDelay; //offset = 76, size = 4
		Float InitialButtonRepeatDelay; //offset = 72, size = 4
		Float MinDesiredFrameRate; //offset = 64, size = 4
		Float DisplayGamma; //offset = 68, size = 4
	};

	class Keypoint: public Actor
	{
		DECLARE_PACKAGE_CLASS( Keypoint, Actor, Engine )

	public:
	};

	class ClipMarker: public Keypoint
	{
		DECLARE_PACKAGE_CLASS( ClipMarker, Keypoint, Engine )

	public:
	};

	class ClipPadEntry: public Object
	{
		DECLARE_PACKAGE_CLASS( ClipPadEntry, Object, Engine )

	public:

		String Title; //offset = 60, size = 12
		String Text; //offset = 72, size = 12
	};

	class CodecMovie: public Object
	{
		DECLARE_PACKAGE_CLASS( CodecMovie, Object, Engine )

	public:

		Float PlaybackDuration; //offset = 60, size = 4
	};

	class CodecMovieBink: public CodecMovie
	{
		DECLARE_PACKAGE_CLASS( CodecMovieBink, CodecMovie, Engine )

	public:
	};

	class CodecMovieFallback: public CodecMovie
	{
		DECLARE_PACKAGE_CLASS( CodecMovieFallback, CodecMovie, Engine )

	public:

		Float CurrentTime; //offset = 64, size = 4
	};

	class ControlChannel: public Channel
	{
		DECLARE_PACKAGE_CLASS( ControlChannel, Channel, Engine )

	public:
	};

	struct KeyValuePair
	{
		String Key; //offset = 0, size = 12
		String Value; //offset = 12, size = 12
	};

	struct PlayerResponseLine
	{
		Int PlayerNum; //offset = 0, size = 4
		Int PlayerID; //offset = 4, size = 4
		String PlayerName; //offset = 8, size = 12
		Int Ping; //offset = 20, size = 4
		Int Score; //offset = 24, size = 4
		Int StatsID; //offset = 28, size = 4
		Array<KeyValuePair> PlayerInfo; //offset = 32, size = 12
	};

	struct ServerResponseLine
	{
		Int ServerID; //offset = 0, size = 4
		String IP; //offset = 4, size = 12
		Int Port; //offset = 16, size = 4
		Int QueryPort; //offset = 20, size = 4
		String ServerName; //offset = 24, size = 12
		String MapName; //offset = 36, size = 12
		String GameType; //offset = 48, size = 12
		Int CurrentPlayers; //offset = 60, size = 4
		Int MaxPlayers; //offset = 64, size = 4
		Int Ping; //offset = 68, size = 4
		Array<KeyValuePair> ServerInfo; //offset = 72, size = 12
		Array<PlayerResponseLine> PlayerInfo; //offset = 84, size = 12
	};

	class Info: public Actor
	{
		DECLARE_PACKAGE_CLASS( Info, Actor, Engine )

	public:
	};

	enum ECoverGroupFillAction
	{
		CGFA_Overwrite,
		CGFA_Add,
		CGFA_Remove,
	};

	class CoverGroup: public Info
	{
		DECLARE_PACKAGE_CLASS( CoverGroup, Info, Engine )

	public:

		Array<NavReference> CoverLinkRefs; //offset = 508, size = 12
		Float AutoSelectRadius; //offset = 520, size = 4
		Float AutoSelectHeight; //offset = 524, size = 4

		void OnToggle( SeqAct_Toggle* Action );
		void ToggleGroup();
		void DisableGroup();
		void EnableGroup();
	};

	const char* COVERLINK_DangerDist = 1536;
	const char* COVERLINK_EdgeExposureDot = 0.8;
	const char* COVERLINK_EdgeCheckDot = 0.2;
	const char* COVERLINK_ExposureDot = 0.4;

	enum ECoverType
	{
		CT_None,
		CT_Standing,
	};

	enum ECoverDirection
	{
		CD_Default,
		CD_Left,
		CD_Right,
	};

	enum ECoverAction
	{
		CA_Default,
		CA_BlindLeft,
		CA_BlindRight,
		CA_LeanLeft,
		CA_LeanRight,
		CA_StepLeft,
		CA_StepRight,
	};

	struct DangerLink
	{
		NavReference DangerNav; //offset = 0, size = 20
		Int DangerCost; //offset = 20, size = 4
	};

	struct ExposedLink
	{
		NavReference TargetMarker; //offset = 0, size = 20
		Byte ExposedScale; //offset = 20, size = 1
	};

	struct FireLink
	{
		NavReference TargetMarker; //offset = 0, size = 20
		Array<FireLinkItem> Items; //offset = 20, size = 12
		Vector LastMarkerLocation; //offset = 32, size = 12
		Bool bFallbackLink: 1; //offset = 44, size = 4
	};

	struct CoverSlot
	{
		Controller* SlotOwner; //offset = 0, size = 4
		Float SlotValidAfterTime; //offset = 4, size = 4
		Byte ForceCoverType; //offset = 8, size = 1
		Byte CoverType; //offset = 9, size = 1
		Vector LocationOffset; //offset = 12, size = 12
		Rotator RotationOffset; //offset = 24, size = 12
		Array<Byte> Actions; //offset = 36, size = 12
		Array<FireLink> FireLinks; //offset = 48, size = 12
		Array<FireLink> ForcedFireLinks; //offset = 60, size = 12
		Array<CoverInfo> RejectedFireLinks; //offset = 72, size = 12
		Array<ExposedLink> ExposedFireLinks; //offset = 84, size = 12
		Array<DangerLink> DangerLinks; //offset = 96, size = 12
		CoverReference MantleTarget; //offset = 108, size = 28
		Array<CoverReference> TurnTarget; //offset = 136, size = 12
		Array<CoverReference> SlipTarget; //offset = 148, size = 12
		Array<CoverReference> OverlapClaims; //offset = 160, size = 12
		Bool bLeanLeft: 1; //offset = 172, size = 4
		Bool bLeanRight: 1; //offset = 172, size = 4
		Bool bCanPopUp: 1; //offset = 172, size = 4
		Bool bCanMantle: 1; //offset = 172, size = 4
		Bool bCanClimbUp: 1; //offset = 172, size = 4
		Bool bCanCoverSlip_Left: 1; //offset = 172, size = 4
		Bool bCanCoverSlip_Right: 1; //offset = 172, size = 4
		Bool bCanSwatTurn_Left: 1; //offset = 172, size = 4
		Bool bCanSwatTurn_Right: 1; //offset = 172, size = 4
		Bool bEnabled: 1; //offset = 172, size = 4
		Bool bAllowPopup: 1; //offset = 172, size = 4
		Bool bAllowMantle: 1; //offset = 172, size = 4
		Bool bAllowCoverSlip: 1; //offset = 172, size = 4
		Bool bAllowClimbUp: 1; //offset = 172, size = 4
		Bool bAllowSwatTurn: 1; //offset = 172, size = 4
		Bool bSelected: 1; //offset = 172, size = 4
		Float LeanTraceDist; //offset = 176, size = 4
		CoverSlotMarker* SlotMarker; //offset = 180, size = 4
	};

	struct FireLinkItem
	{
		Byte SrcType; //offset = 0, size = 1
		Byte SrcAction; //offset = 1, size = 1
		Byte DestType; //offset = 2, size = 1
		Byte DestAction; //offset = 3, size = 1
	};

	struct CovPosInfo
	{
		CoverLink* Link; //offset = 0, size = 4
		Int LtSlotIdx; //offset = 4, size = 4
		Int RtSlotIdx; //offset = 8, size = 4
		Float LtToRtPct; //offset = 12, size = 4
		Vector Location; //offset = 16, size = 12
		Vector Normal; //offset = 28, size = 12
		Vector Tangent; //offset = 40, size = 12
	};

	struct TargetInfo
	{
		Actor* Target; //offset = 0, size = 4
		Int SlotIdx; //offset = 4, size = 4
		Int Direction; //offset = 8, size = 4
	};

	struct CoverInfo
	{
		CoverLink* Link; //offset = 0, size = 4
		Int SlotIdx; //offset = 4, size = 4
	};

	struct CoverReference
	{
		Int SlotIdx; //offset = 20, size = 4
		Int Direction; //offset = 24, size = 4
	};

	class CoverLink: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( CoverLink, NavigationPoint, Engine )

	public:

		Array<CoverSlot> Slots; //offset = 776, size = 12
		Array<Controller*> Claims; //offset = 788, size = 12
		Bool bDisabled: 1; //offset = 800, size = 4
		Bool bClaimAllSlots: 1; //offset = 800, size = 4
		Bool bAutoSort: 1; //offset = 800, size = 4
		Bool bAutoAdjust: 1; //offset = 800, size = 4
		Bool bCircular: 1; //offset = 800, size = 4
		Bool bLooped: 1; //offset = 800, size = 4
		Bool bPlayerOnly: 1; //offset = 800, size = 4
		Bool bDynamicCover: 1; //offset = 800, size = 4
		Bool bDebug_FireLinks: 1; //offset = 800, size = 4
		Bool bDebug_ExposedLinks: 1; //offset = 800, size = 4
		Bool bDebug_DangerLinks: 1; //offset = 800, size = 4
		Float MaxFireLinkDist; //offset = 804, size = 4
		Vector CircularOrigin; //offset = 808, size = 12
		Float CircularRadius; //offset = 820, size = 4
		Float AlignDist; //offset = 824, size = 4
		Float StandHeight; //offset = 828, size = 4
		Float MidHeight; //offset = 832, size = 4
		Vector StandingLeanOffset; //offset = 836, size = 12
		Vector CrouchLeanOffset; //offset = 848, size = 12
		Vector PopupOffset; //offset = 860, size = 12
		Float SlipDist; //offset = 872, size = 4
		Float TurnDist; //offset = 876, size = 4
		Float DangerScale; //offset = 880, size = 4
		CoverLink* NextCoverLink; //offset = 884, size = 4

		String GetDebugString( Int SlotIdx );
		Int AddCoverSlot( Vector SlotLocation, Rotator SlotRotation, Int SlotIdx, Bool bForceSlotUpdate );
		Bool GetSwatTurnTarget( Int SlotIdx, Int Direction, CoverReference out_Info, Int TurnIdx, Int Num );
		void OnToggle( SeqAct_Toggle* inAction, Int SlotIdx );
		Bool IsEnabled();
		Bool AutoAdjustSlot( Int SlotIdx, Bool bOnlyCheckLeans );
		void OnModifyCover( SeqAct_ModifyCover* Action, Array<Int> SlotIndices, Int idx, Int SlotIdx, CoverReplicator* CoverReplicator );
		void SetSlotEnabled( Int SlotIdx, Bool bEnable );
		void SetDisabled( Bool bNewDisabled, Int SlotIdx );
		void GetSlotActions( Int SlotIdx, Array<Byte> Actions );
		Bool HasFireLinkTo( Int SlotIdx, CoverInfo ChkCover, Bool bAllowFallbackLinks );
		Bool GetFireLinkTo( Int SlotIdx, CoverInfo ChkCover, Byte ChkAction, Byte ChkType, Int out_FireLinkIdx, Array<Int> out_Items );
		Bool AllowLeftTransition( Int SlotIdx, Int NextSlotIdx );
		Bool AllowRightTransition( Int SlotIdx, Int NextSlotIdx );
		Bool IsRightEdgeSlot( Int SlotIdx, Bool bIgnoreLeans );
		Bool IsLeftEdgeSlot( Int SlotIdx, Bool bIgnoreLeans );
		Bool IsEdgeSlot( Int SlotIdx, Bool bIgnoreLeans );
		Bool FindSlots( Vector CheckLocation, Float MaxDistance, Int LeftSlotIdx, Int RightSlotIdx );
		Bool IsStationarySlot( Int SlotIdx );
		Bool IsValidClaim( Controller* ChkClaim, Int SlotIdx, Bool bSkipTeamCheck, Bool bSkipOverlapCheck );
		Bool UnClaim( Controller* OldClaim, Int SlotIdx, Bool bUnclaimAll, Int idx, Int NumReleased, Bool bResult );
		Bool Claim( Controller* NewClaim, Int SlotIdx, Int idx, Bool bResult, Bool bDoClaim, PlayerController* PC, Controller* PreviousOwner );
		void SetInvalidUntil( Int SlotIdx, Float TimeToBecomeValid );
		Bool IsExposedTo( Int SlotIdx, CoverInfo ChkSlot, Float out_ExposedScale );
		CoverSlotMarker* GetSlotMarker( Int SlotIdx );
		Vector GetSlotViewPoint( Int SlotIdx, Byte Type, Byte Action );
		Rotator GetSlotRotation( Int SlotIdx, Bool bForceUseOffset );
		Vector GetSlotLocation( Int SlotIdx, Bool bForceUseOffset );
	};

	class ForcedReachSpec: public ReachSpec
	{
		DECLARE_PACKAGE_CLASS( ForcedReachSpec, ReachSpec, Engine )

	public:
	};

	class CoverSlipReachSpec: public ForcedReachSpec
	{
		DECLARE_PACKAGE_CLASS( CoverSlipReachSpec, ForcedReachSpec, Engine )

	public:

		Byte SpecDirection; //offset = 148, size = 1
	};

	class CoverSlotMarker: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( CoverSlotMarker, NavigationPoint, Engine )

	public:

		CoverInfo OwningSlot; //offset = 776, size = 8

		Bool IsValidClaim( Controller* ChkClaim, Bool bSkipTeamCheck, Bool bSkipOverlapCheck );
		Rotator GetSlotRotation();
		Vector GetSlotLocation();
		void PostBeginPlay();
	};

	struct CullDistanceSizePair
	{
		Float Size; //offset = 0, size = 4
		Float CullDistance; //offset = 4, size = 4
	};

	class CullDistanceVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( CullDistanceVolume, Volume, Engine )

	public:

		Array<CullDistanceSizePair> CullDistances; //offset = 568, size = 12
		Bool bEnabled: 1; //offset = 580, size = 4
	};

	struct PresetGeneratedPoint
	{
		Float KeyIn; //offset = 0, size = 4
		Float KeyOut; //offset = 4, size = 4
		Bool TangentsValid: 1; //offset = 8, size = 4
		Float TangentIn; //offset = 12, size = 4
		Float TangentOut; //offset = 16, size = 4
		Byte IntepMode; //offset = 20, size = 1
	};

	class CurveEdPresetCurve: public Object
	{
		DECLARE_PACKAGE_CLASS( CurveEdPresetCurve, Object, Engine )

	public:

		String CurveName; //offset = 60, size = 12
		Array<PresetGeneratedPoint> Points; //offset = 72, size = 12

		Bool RetrieveFloatCurvePoints( Int CurveIndex, DistributionFloat* Distribution );
	};

	class CustomPropertyItemHandler: public Interface
	{
		DECLARE_PACKAGE_CLASS( CustomPropertyItemHandler, Interface, Engine )

	public:
	};

	class CylinderComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( CylinderComponent, PrimitiveComponent, Engine )

	public:

		Float CollisionHeight; //offset = 448, size = 4
		Float CollisionRadius; //offset = 452, size = 4

		void SetCylinderSize( Float NewRadius, Float NewHeight );
	};

	class DamageType: public Object
	{
		DECLARE_PACKAGE_CLASS( DamageType, Object, Engine )

	public:

		String DeathString; //offset = 60, size = 12
		String FemaleSuicide; //offset = 72, size = 12
		String MaleSuicide; //offset = 84, size = 12
		Bool bArmorStops: 1; //offset = 96, size = 4
		Bool bAlwaysGibs: 1; //offset = 96, size = 4
		Bool bNeverGibs: 1; //offset = 96, size = 4
		Bool bLocationalHit: 1; //offset = 96, size = 4
		Bool bCausesBlood: 1; //offset = 96, size = 4
		Bool bCausesBloodSplatterDecals: 1; //offset = 96, size = 4
		Bool bKUseOwnDeathVel: 1; //offset = 96, size = 4
		Bool bCausedByWorld: 1; //offset = 96, size = 4
		Bool bExtraMomentumZ: 1; //offset = 96, size = 4
		Bool bIgnoreDriverDamageMult: 1; //offset = 96, size = 4
		Bool bDontHurtInstigator: 1; //offset = 96, size = 4
		Bool bKRadialImpulse: 1; //offset = 96, size = 4
		Bool bRadialDamageVelChange: 1; //offset = 96, size = 4
		Float GibModifier; //offset = 100, size = 4
		Float KDamageImpulse; //offset = 104, size = 4
		Float KDeathVel; //offset = 108, size = 4
		Float KDeathUpKick; //offset = 112, size = 4
		Float KImpulseRadius; //offset = 116, size = 4
		Float RadialDamageImpulse; //offset = 120, size = 4
		Float VehicleDamageScaling; //offset = 124, size = 4
		Float VehicleMomentumScaling; //offset = 128, size = 4
		ForceFeedbackWaveform* DamagedFFWaveform; //offset = 132, size = 4
		ForceFeedbackWaveform* KilledFFWaveform; //offset = 136, size = 4

		Float VehicleDamageScalingFor( Vehicle* V );
		String SuicideMessage( PlayerReplicationInfo* Victim );
		String DeathMessage( PlayerReplicationInfo* Killer, PlayerReplicationInfo* Victim );
	};

	class DebugManager: public Object
	{
		DECLARE_PACKAGE_CLASS( DebugManager, Object, Engine )

	public:

		Int FirstColoredMip; //offset = 60, size = 4
	};

	class PhysicsVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( PhysicsVolume, Volume, Engine )

	public:

		Vector ZoneVelocity; //offset = 568, size = 12
		Bool bVelocityAffectsWalking: 1; //offset = 580, size = 4
		Bool bPainCausing: 1; //offset = 580, size = 4
		Bool BACKUP_bPainCausing: 1; //offset = 580, size = 4
		Bool bDestructive: 1; //offset = 580, size = 4
		Bool bNoInventory: 1; //offset = 580, size = 4
		Bool bMoveProjectiles: 1; //offset = 580, size = 4
		Bool bBounceVelocity: 1; //offset = 580, size = 4
		Bool bNeutralZone: 1; //offset = 580, size = 4
		Bool bPhysicsOnContact: 1; //offset = 580, size = 4
		Bool bWaterVolume: 1; //offset = 580, size = 4
		Float GroundFriction; //offset = 584, size = 4
		Float TerminalVelocity; //offset = 588, size = 4
		Float DamagePerSec; //offset = 592, size = 4
		Class* DamageType; //offset = 596, size = 4
		Int Priority; //offset = 600, size = 4
		Float FluidFriction; //offset = 604, size = 4
		Float RigidBodyDamping; //offset = 608, size = 4
		Float MaxDampingForce; //offset = 612, size = 4
		Info* PainTimer; //offset = 616, size = 4
		Controller* DamageInstigator; //offset = 620, size = 4
		PhysicsVolume* NextPhysicsVolume; //offset = 624, size = 4

		void OnSetDamageInstigator( SeqAct_SetDamageInstigator* Action );
		void NotifyPawnBecameViewTarget( Pawn* P, PlayerController* PC );
		void ModifyPlayer( Pawn* PlayerPawn );
		void CausePainTo( Actor* Other );
		void Touch( Actor* Other, PrimitiveComponent* OtherComp, Vector HitLocation, Vector HitNormal );
		void TimerPop( VolumeTimer* T, Actor* A );
		void OnToggle( SeqAct_Toggle* inAction );
		void PawnLeavingVolume( Pawn* Other );
		void PawnEnteredVolume( Pawn* Other );
		void ActorLeavingVolume( Actor* Other );
		void ActorEnteredVolume( Actor* Other );
		void PhysicsChangedFor( Actor* Other );
		void Reset();
		void PostBeginPlay();
		Float GetRBPhysicsGravityScaling();
		Float GetGravityZ();
	};

	class DefaultPhysicsVolume: public PhysicsVolume
	{
		DECLARE_PACKAGE_CLASS( DefaultPhysicsVolume, PhysicsVolume, Engine )

	public:

		void Destroyed();
	};

	class LevelBase: public Object
	{
		DECLARE_PACKAGE_CLASS( LevelBase, Object, Engine )

	public:
	};

	class PendingLevel: public LevelBase
	{
		DECLARE_PACKAGE_CLASS( PendingLevel, LevelBase, Engine )

	public:
	};

	class DemoPlayPendingLevel: public PendingLevel
	{
		DECLARE_PACKAGE_CLASS( DemoPlayPendingLevel, PendingLevel, Engine )

	public:
	};

	class DemoRecConnection: public NetConnection
	{
		DECLARE_PACKAGE_CLASS( DemoRecConnection, NetConnection, Engine )

	public:
	};

	class NetDriver: public Subsystem
	{
		DECLARE_PACKAGE_CLASS( NetDriver, Subsystem, Engine )

	public:

		Array<String> DownloadManagers; //offset = 168, size = 12
		String NetConnectionClassName; //offset = 276, size = 12
		Int MaxDownloadSize; //offset = 164, size = 4
		Bool AllowDownloads: 1; //offset = 140, size = 4
		Bool bClampListenServerTickRate: 1; //offset = 136, size = 4
		Int NetServerMaxTickRate; //offset = 132, size = 4
		Int MaxInternetClientRate; //offset = 128, size = 4
		Int MaxClientRate; //offset = 124, size = 4
		Float ServerTravelPause; //offset = 120, size = 4
		Float SpawnPrioritySeconds; //offset = 116, size = 4
		Float RelevantTimeout; //offset = 112, size = 4
		Float KeepAliveTime; //offset = 108, size = 4
		Float InitialConnectTimeout; //offset = 104, size = 4
		Float ConnectionTimeout; //offset = 100, size = 4
	};

	class DemoRecDriver: public NetDriver
	{
		DECLARE_PACKAGE_CLASS( DemoRecDriver, NetDriver, Engine )

	public:

		String DemoSpectatorClass; //offset = 348, size = 12
	};

	class Light: public Actor
	{
		DECLARE_PACKAGE_CLASS( Light, Actor, Engine )

	public:

		LightComponent* LightComponent; //offset = 508, size = 4
		Bool bEnabled: 1; //offset = 512, size = 4

		void OnToggle( SeqAct_Toggle* Action );
		void ReplicatedEvent( Name VarName );
	};

	class DirectionalLight: public Light
	{
		DECLARE_PACKAGE_CLASS( DirectionalLight, Light, Engine )

	public:
	};

	enum EShadowFilterQuality
	{
		SFQ_Low,
		SFQ_Medium,
	};

	enum EShadowProjectionTechnique
	{
		ShadowProjTech_Default,
		ShadowProjTech_PCF,
		ShadowProjTech_VSM,
		ShadowProjTech_BPCF_Low,
	};

	enum ELightShadowMode
	{
		LightShadow_Normal,
		LightShadow_Modulate,
	};

	enum ELightAffectsClassification
	{
		LAC_USER_SELECTED,
		LAC_DYNAMIC_AFFECTING,
		LAC_STATIC_AFFECTING,
	};

	struct LightingChannelContainer
	{
		Bool bInitialized: 1; //offset = 0, size = 4
		Bool BSP: 1; //offset = 0, size = 4
		Bool Static: 1; //offset = 0, size = 4
		Bool Dynamic: 1; //offset = 0, size = 4
		Bool CompositeDynamic: 1; //offset = 0, size = 4
		Bool Skybox: 1; //offset = 0, size = 4
		Bool Unnamed: 1; //offset = 0, size = 4
		Bool Unnamed: 1; //offset = 0, size = 4
		Bool Unnamed: 1; //offset = 0, size = 4
		Bool Unnamed: 1; //offset = 0, size = 4
		Bool Unnamed: 1; //offset = 0, size = 4
		Bool Unnamed: 1; //offset = 0, size = 4
		Bool Cinematic: 1; //offset = 0, size = 4
		Bool Cinematic: 1; //offset = 0, size = 4
		Bool Cinematic: 1; //offset = 0, size = 4
		Bool Cinematic: 1; //offset = 0, size = 4
		Bool Cinematic: 1; //offset = 0, size = 4
		Bool Cinematic: 1; //offset = 0, size = 4
		Bool Gameplay: 1; //offset = 0, size = 4
		Bool Gameplay: 1; //offset = 0, size = 4
		Bool Gameplay: 1; //offset = 0, size = 4
		Bool Gameplay: 1; //offset = 0, size = 4
	};

	class LightComponent: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( LightComponent, ActorComponent, Engine )

	public:

		Pointer SceneInfo; //offset = 88, size = 4
		Matrix WorldToLight; //offset = 96, size = 64
		Matrix LightToWorld; //offset = 160, size = 64
		Guid LightGuid; //offset = 224, size = 16
		Guid LightmapGuid; //offset = 240, size = 16
		Float Brightness; //offset = 256, size = 4
		Color LightColor; //offset = 260, size = 4
		LightFunction* Function; //offset = 264, size = 4
		Bool bEnabled: 1; //offset = 268, size = 4
		Bool CastShadows: 1; //offset = 268, size = 4
		Bool CastStaticShadows: 1; //offset = 268, size = 4
		Bool CastDynamicShadows: 1; //offset = 268, size = 4
		Bool bCastCompositeShadow: 1; //offset = 268, size = 4
		Bool RequireDynamicShadows: 1; //offset = 268, size = 4
		Bool bForceDynamicLight: 1; //offset = 268, size = 4
		Bool UseDirectLightMap: 1; //offset = 268, size = 4
		Bool bHasLightEverBeenBuiltIntoLightMap: 1; //offset = 268, size = 4
		Bool bOnlyAffectSameAndSpecifiedLevels: 1; //offset = 268, size = 4
		Bool bCanAffectDynamicPrimitivesOutsideDynamicChannel: 1; //offset = 268, size = 4
		Bool bUseVolumes: 1; //offset = 268, size = 4
		Bool bAffectedByModulatedShadows: 1; //offset = 268, size = 4
		Bool bAllowedToBypassLightEnvironments: 1; //offset = 268, size = 4
		Bool bCullModulatedShadowOnSubject: 1; //offset = 268, size = 4
		Bool bAllowDynamicProjective: 1; //offset = 268, size = 4
		LightEnvironmentComponent* LightEnvironment; //offset = 272, size = 4
		Array<Name> OtherLevelsToAffect; //offset = 276, size = 12
		LightingChannelContainer LightingChannels; //offset = 288, size = 4
		Array<Brush*> InclusionVolumes; //offset = 292, size = 12
		Array<Brush*> ExclusionVolumes; //offset = 304, size = 12
		Array<Pointer> InclusionConvexVolumes; //offset = 316, size = 12
		Array<Pointer> ExclusionConvexVolumes; //offset = 328, size = 12
		Byte LightAffectsClassification; //offset = 340, size = 1
		Byte LightShadowMode; //offset = 341, size = 1
		LinearColor ModShadowColor; //offset = 344, size = 16
		Float ModShadowFadeoutTime; //offset = 360, size = 4
		Float ModShadowFadeoutExponent; //offset = 364, size = 4
		Int LightListIndex; //offset = 368, size = 4
		Byte ShadowProjectionTechnique; //offset = 372, size = 1
		Byte ShadowFilterQuality; //offset = 373, size = 1
		Int MinShadowResolution; //offset = 376, size = 4
		Int MaxShadowResolution; //offset = 380, size = 4

		void OnUpdatePropertyBrightness();
		void OnUpdatePropertyLightColor();
		void UpdateColorAndBrightness();
		Vector GetDirection();
		Vector GetOrigin();
		void SetLightProperties( Float NewBrightness, Color NewLightColor, LightFunction* NewLightFunction );
		void SetEnabled( Bool bSetEnabled );
	};

	class DirectionalLightComponent: public LightComponent
	{
		DECLARE_PACKAGE_CLASS( DirectionalLightComponent, LightComponent, Engine )

	public:

		Float TraceDistance; //offset = 384, size = 4
	};

	class DirectionalLightToggleable: public DirectionalLight
	{
		DECLARE_PACKAGE_CLASS( DirectionalLightToggleable, DirectionalLight, Engine )

	public:
	};

	class DistributionFloatConstant: public DistributionFloat
	{
		DECLARE_PACKAGE_CLASS( DistributionFloatConstant, DistributionFloat, Engine )

	public:

		Float Constant; //offset = 80, size = 4
	};

	class DistributionFloatConstantCurve: public DistributionFloat
	{
		DECLARE_PACKAGE_CLASS( DistributionFloatConstantCurve, DistributionFloat, Engine )

	public:

		InterpCurveFloat ConstantCurve; //offset = 80, size = 16
	};

	enum DistributionParamMode
	{
		DPM_Normal,
		DPM_Abs,
	};

	class DistributionFloatParameterBase: public DistributionFloatConstant
	{
		DECLARE_PACKAGE_CLASS( DistributionFloatParameterBase, DistributionFloatConstant, Engine )

	public:

		Name ParameterName; //offset = 84, size = 8
		Float MinInput; //offset = 92, size = 4
		Float MaxInput; //offset = 96, size = 4
		Float MinOutput; //offset = 100, size = 4
		Float MaxOutput; //offset = 104, size = 4
		Byte ParamMode; //offset = 108, size = 1
	};

	class DistributionFloatUniform: public DistributionFloat
	{
		DECLARE_PACKAGE_CLASS( DistributionFloatUniform, DistributionFloat, Engine )

	public:

		Float Min; //offset = 80, size = 4
		Float Max; //offset = 84, size = 4
		Bool bConsistentValue: 1; //offset = 88, size = 4
		Float fCachedValue; //offset = 92, size = 4
	};

	class DistributionFloatUniformCurve: public DistributionFloat
	{
		DECLARE_PACKAGE_CLASS( DistributionFloatUniformCurve, DistributionFloat, Engine )

	public:

		InterpCurveVector2D ConstantCurve; //offset = 80, size = 16
	};

	class DistributionVectorConstant: public DistributionVector
	{
		DECLARE_PACKAGE_CLASS( DistributionVectorConstant, DistributionVector, Engine )

	public:

		Vector Constant; //offset = 80, size = 12
		Bool bLockAxes: 1; //offset = 92, size = 4
		Byte LockedAxes; //offset = 96, size = 1
	};

	class DistributionVectorConstantCurve: public DistributionVector
	{
		DECLARE_PACKAGE_CLASS( DistributionVectorConstantCurve, DistributionVector, Engine )

	public:

		InterpCurveVector ConstantCurve; //offset = 80, size = 16
		Bool bLockAxes: 1; //offset = 96, size = 4
		Byte LockedAxes; //offset = 100, size = 1
	};

	class DistributionVectorParameterBase: public DistributionVectorConstant
	{
		DECLARE_PACKAGE_CLASS( DistributionVectorParameterBase, DistributionVectorConstant, Engine )

	public:

		Name ParameterName; //offset = 100, size = 8
		Vector MinInput; //offset = 108, size = 12
		Vector MaxInput; //offset = 120, size = 12
		Vector MinOutput; //offset = 132, size = 12
		Vector MaxOutput; //offset = 144, size = 12
		Byte ParamModes[3]; //offset = 156, size = 1
	};

	class DistributionVectorUniform: public DistributionVector
	{
		DECLARE_PACKAGE_CLASS( DistributionVectorUniform, DistributionVector, Engine )

	public:

		Vector Max; //offset = 80, size = 12
		Vector Min; //offset = 92, size = 12
		Bool bLockAxes: 1; //offset = 104, size = 4
		Bool bUseExtremes: 1; //offset = 104, size = 4
		Byte LockedAxes; //offset = 108, size = 1
		Byte MirrorFlags[3]; //offset = 109, size = 1
	};

	class DistributionVectorUniformCurve: public DistributionVector
	{
		DECLARE_PACKAGE_CLASS( DistributionVectorUniformCurve, DistributionVector, Engine )

	public:

		InterpCurveTwoVectors ConstantCurve; //offset = 80, size = 16
		Bool bLockAxes1: 1; //offset = 96, size = 4
		Bool bLockAxes2: 1; //offset = 96, size = 4
		Bool bUseExtremes: 1; //offset = 96, size = 4
		Byte LockedAxes[2]; //offset = 100, size = 1
		Byte MirrorFlags[3]; //offset = 102, size = 1
	};

	enum EFocusType
	{
		FOCUS_Distance,
		FOCUS_Position,
	};

	class DOFEffect: public PostProcessEffect
	{
		DECLARE_PACKAGE_CLASS( DOFEffect, PostProcessEffect, Engine )

	public:

		Float FalloffExponent; //offset = 100, size = 4
		Float BlurKernelSize; //offset = 104, size = 4
		Float MaxNearBlurAmount; //offset = 108, size = 4
		Float MaxFarBlurAmount; //offset = 112, size = 4
		Color ModulateBlurColor; //offset = 116, size = 4
		Byte FocusType; //offset = 120, size = 1
		Float FocusInnerRadius; //offset = 124, size = 4
		Float FocusDistance; //offset = 128, size = 4
		Vector FocusPosition; //offset = 132, size = 12
	};

	class DOFAndBloomEffect: public DOFEffect
	{
		DECLARE_PACKAGE_CLASS( DOFAndBloomEffect, DOFEffect, Engine )

	public:

		Float BloomScale; //offset = 144, size = 4
		Float SceneMultiplier; //offset = 148, size = 4
	};

	enum EDoorType
	{
		DOOR_Shoot,
		DOOR_Touch,
	};

	class DoorMarker: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( DoorMarker, NavigationPoint, Engine )

	public:

		InterpActor* MyDoor; //offset = 776, size = 4
		Byte DoorType; //offset = 780, size = 1
		Actor* DoorTrigger; //offset = 784, size = 4
		Bool bWaitUntilCompletelyOpened: 1; //offset = 788, size = 4
		Bool bInitiallyClosed: 1; //offset = 788, size = 4
		Bool bBlockedWhenClosed: 1; //offset = 788, size = 4
		Bool bDoorOpen: 1; //offset = 788, size = 4
		Bool bTempDisabledCollision: 1; //offset = 788, size = 4

		Bool SuggestMovePreparation( Pawn* Other );
		Bool ProceedWithMove( Pawn* Other );
		Actor* SpecialHandling( Pawn* Other, Actor* TouchActor );
		void MoverClosed();
		void MoverOpened();
		void PostBeginPlay();
	};

	class DrawBoxComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( DrawBoxComponent, PrimitiveComponent, Engine )

	public:

		Color BoxColor; //offset = 448, size = 4
		Material* BoxMaterial; //offset = 452, size = 4
		Vector BoxExtent; //offset = 456, size = 12
		Bool bDrawWireBox: 1; //offset = 468, size = 4
		Bool bDrawLitBox: 1; //offset = 468, size = 4
	};

	class DrawCapsuleComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( DrawCapsuleComponent, PrimitiveComponent, Engine )

	public:

		Color CapsuleColor; //offset = 448, size = 4
		Material* CapsuleMaterial; //offset = 452, size = 4
		Float CapsuleHeight; //offset = 456, size = 4
		Float CapsuleRadius; //offset = 460, size = 4
		Bool bDrawWireCapsule: 1; //offset = 464, size = 4
		Bool bDrawLitCapsule: 1; //offset = 464, size = 4
	};

	class DrawConeComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( DrawConeComponent, PrimitiveComponent, Engine )

	public:

		Color ConeColor; //offset = 448, size = 4
		Float ConeRadius; //offset = 452, size = 4
		Float ConeAngle; //offset = 456, size = 4
		Int ConeSides; //offset = 460, size = 4
	};

	class DrawCylinderComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( DrawCylinderComponent, PrimitiveComponent, Engine )

	public:

		Color CylinderColor; //offset = 448, size = 4
		Material* CylinderMaterial; //offset = 452, size = 4
		Float CylinderRadius; //offset = 456, size = 4
		Float CylinderTopRadius; //offset = 460, size = 4
		Float CylinderHeight; //offset = 464, size = 4
		Float CylinderHeightOffset; //offset = 468, size = 4
		Int CylinderSides; //offset = 472, size = 4
		Bool bDrawWireCylinder: 1; //offset = 476, size = 4
		Bool bDrawLitCylinder: 1; //offset = 476, size = 4
	};

	class DrawFrustumComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( DrawFrustumComponent, PrimitiveComponent, Engine )

	public:

		Color FrustumColor; //offset = 448, size = 4
		Float FrustumAngle; //offset = 452, size = 4
		Float FrustumAspectRatio; //offset = 456, size = 4
		Float FrustumStartDist; //offset = 460, size = 4
		Float FrustumEndDist; //offset = 464, size = 4
		Texture* Texture; //offset = 468, size = 4
	};

	class DrawLightConeComponent: public DrawConeComponent
	{
		DECLARE_PACKAGE_CLASS( DrawLightConeComponent, DrawConeComponent, Engine )

	public:
	};

	class DrawSphereComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( DrawSphereComponent, PrimitiveComponent, Engine )

	public:

		Color SphereColor; //offset = 448, size = 4
		Material* SphereMaterial; //offset = 452, size = 4
		Float SphereRadius; //offset = 456, size = 4
		Int SphereSides; //offset = 460, size = 4
		Bool bDrawWireSphere: 1; //offset = 464, size = 4
		Bool bDrawLitSphere: 1; //offset = 464, size = 4
	};

	class DrawLightRadiusComponent: public DrawSphereComponent
	{
		DECLARE_PACKAGE_CLASS( DrawLightRadiusComponent, DrawSphereComponent, Engine )

	public:
	};

	class DrawQuadComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( DrawQuadComponent, PrimitiveComponent, Engine )

	public:

		Texture* Texture; //offset = 448, size = 4
		Float Width; //offset = 452, size = 4
		Float Height; //offset = 456, size = 4
	};


	class DroppedPickup: public Actor
	{
		DECLARE_PACKAGE_CLASS( DroppedPickup, Actor, Engine )

	public:
		struct FadeOut
		{
			/*
			BeginState
			*/
		};

		struct Pickup
		{
			/*
			EndState
			BeginState
			CheckTouching
			Timer
			Touch
			RecheckValidTouch
			ValidTouch
			*/
		};

		Inventory* Inventory; //offset = 508, size = 4
		Class* InventoryClass; //offset = 512, size = 4
		NavigationPoint* PickupCache; //offset = 516, size = 4
		Bool bFadeOut: 1; //offset = 520, size = 4

		void RecheckValidTouch();
		void PickedUpBy( Pawn* P );
		void GiveTo( Pawn* P );
		void Landed( Vector HitNormal, Actor* FloorActor );
		Float DetourWeight( Pawn* Other, Float PathWeight );
		void EncroachedBy( Actor* Other );
		void SetPickupParticles( ParticleSystemComponent* PickupParticles, ParticleSystemComponent* Comp );
		void SetPickupMesh( PrimitiveComponent* PickupMesh, ActorComponent* Comp );
		void Reset();
		void ReplicatedEvent( Name VarName );
		void Destroyed();
		void RemoveFromNavigation();
		void AddToNavigation();
	};

	class DynamicAnchor: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( DynamicAnchor, NavigationPoint, Engine )

	public:

		Controller* CurrentUser; //offset = 776, size = 4
	};

	class DynamicBlockingVolume: public BlockingVolume
	{
		DECLARE_PACKAGE_CLASS( DynamicBlockingVolume, BlockingVolume, Engine )

	public:
	};

	class DynamicCameraActor: public CameraActor
	{
		DECLARE_PACKAGE_CLASS( DynamicCameraActor, CameraActor, Engine )

	public:
	};

	class DynamicLightEnvironmentComponent: public LightEnvironmentComponent
	{
		DECLARE_PACKAGE_CLASS( DynamicLightEnvironmentComponent, LightEnvironmentComponent, Engine )

	public:

		Pointer State; //offset = 100, size = 4
		Float InvisibleUpdateTime; //offset = 104, size = 4
		Float MinTimeBetweenFullUpdates; //offset = 108, size = 4
		Int NumVolumeVisibilitySamples; //offset = 112, size = 4
		LinearColor AmbientShadowColor; //offset = 116, size = 16
		Vector AmbientShadowSourceDirection; //offset = 132, size = 12
		LinearColor AmbientGlow; //offset = 144, size = 16
		Float LightDesaturation; //offset = 160, size = 4
		Float LightDistance; //offset = 164, size = 4
		Float ShadowDistance; //offset = 168, size = 4
		Bool bCastShadows: 1; //offset = 172, size = 4
		Bool bDynamic: 1; //offset = 172, size = 4
		Bool bSynthesizePointLight: 1; //offset = 172, size = 4
		Bool bSynthesizeSHLight: 1; //offset = 172, size = 4
		Float ModShadowFadeoutTime; //offset = 176, size = 4
		Float ModShadowFadeoutExponent; //offset = 180, size = 4
		Byte ShadowFilterQuality; //offset = 184, size = 1
		Byte LightShadowMode; //offset = 185, size = 1
		Float BouncedLightingIntensity; //offset = 188, size = 4
		Float BouncedLightingDesaturation; //offset = 192, size = 4
	};

	class DynamicSMActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( DynamicSMActor, Actor, Engine )

	public:

		StaticMeshComponent* StaticMeshComponent; //offset = 508, size = 4
		LightEnvironmentComponent* LightEnvironment; //offset = 512, size = 4
		StaticMesh* ReplicatedMesh; //offset = 516, size = 4
		MaterialInterface* ReplicatedMaterial; //offset = 520, size = 4
		Vector ReplicatedMeshTranslation; //offset = 524, size = 12
		Rotator ReplicatedMeshRotation; //offset = 536, size = 12
		Vector ReplicatedMeshScale3D; //offset = 548, size = 12
		Bool bPawnCanBaseOn: 1; //offset = 560, size = 4
		Bool bSafeBaseIfAsleep: 1; //offset = 560, size = 4

		void Detach( Actor* Other, Int idx, Pawn* P, Pawn* Test, Bool bResetPhysics );
		void Attach( Actor* Other, Pawn* P );
		Bool CanBasePawn( Pawn* P );
		void SetStaticMesh( StaticMesh* NewMesh, Vector NewTranslation, Rotator NewRotation, Vector NewScale3D );
		void OnSetMaterial( SeqAct_SetMaterial* Action );
		void OnSetStaticMesh( SeqAct_SetStaticMesh* Action );
		void ReplicatedEvent( Name VarName );
		void PostBeginPlay();
	};

	class EdCoordSystem: public Object
	{
		DECLARE_PACKAGE_CLASS( EdCoordSystem, Object, Engine )

	public:

		Matrix M; //offset = 64, size = 64
		String Desc; //offset = 128, size = 12
	};

	struct EmitterBaseInfo
	{
		ParticleSystemComponent* PSC; //offset = 0, size = 4
		Actor* Base; //offset = 4, size = 4
		Vector RelativeLocation; //offset = 8, size = 12
		Rotator RelativeRotation; //offset = 20, size = 12
	};

	class EmitterPool: public Actor
	{
		DECLARE_PACKAGE_CLASS( EmitterPool, Actor, Engine )

	public:

		ParticleSystemComponent* PSCTemplate; //offset = 508, size = 4
		Array<ParticleSystemComponent*> PoolComponents; //offset = 512, size = 12
		Array<ParticleSystemComponent*> ActiveComponents; //offset = 524, size = 12
		Int MaxActiveEffects; //offset = 536, size = 4
		Bool bLogPoolOverflow: 1; //offset = 540, size = 4
		Bool bLogPoolOverflowList: 1; //offset = 540, size = 4
		Array<EmitterBaseInfo> RelativePSCs; //offset = 544, size = 12
		Float SMC_MIC_ReductionTime; //offset = 556, size = 4
		Float SMC_MIC_CurrentReductionTime; //offset = 560, size = 4
		Int IdealStaticMeshComponents; //offset = 564, size = 4
		Int IdealMaterialInstanceConstants; //offset = 568, size = 4
		Array<StaticMeshComponent*> FreeSMComponents; //offset = 572, size = 12
		Array<MaterialInstanceConstant*> FreeMatInstConsts; //offset = 584, size = 12

		ParticleSystemComponent* SpawnEmitterCustomLifetime( ParticleSystem* EmitterTemplate );
		ParticleSystemComponent* SpawnEmitter( ParticleSystem* EmitterTemplate, Vector SpawnLocation, Rotator SpawnRotation, Actor* AttachToActor, Int I, ParticleSystemComponent* Result );
		ParticleSystemComponent* GetPooledComponent( ParticleSystem* EmitterTemplate );
		MaterialInstanceConstant* GetFreeMatInstConsts( Bool bCreateNewObject );
		void FreeMaterialInstanceConstants( StaticMeshComponent* SMC );
		StaticMeshComponent* GetFreeStaticMeshComponent( Bool bCreateNewObject );
		void FreeStaticMeshComponents( ParticleSystemComponent* PSC );
		void ReturnToPool( ParticleSystemComponent* PSC );
		void OnParticleSystemFinished( ParticleSystemComponent* PSC, Int I );
	};

	class FaceFXAnimSet: public Object
	{
		DECLARE_PACKAGE_CLASS( FaceFXAnimSet, Object, Engine )

	public:

		FaceFXAsset* DefaultFaceFXAsset; //offset = 60, size = 4
		Pointer InternalFaceFXAnimSet; //offset = 64, size = 4
		Array<Byte> RawFaceFXAnimSetBytes; //offset = 68, size = 12
		Array<Byte> RawFaceFXMiniSessionBytes; //offset = 80, size = 12
		Array<WwiseBaseSoundObject*> ReferencedSoundCues; //offset = 92, size = 12
		Int NumLoadErrors; //offset = 104, size = 4
		Bool m_bBioSoundCuesFixedUp: 1; //offset = 108, size = 4
	};

	class FaceFXAsset: public Object
	{
		DECLARE_PACKAGE_CLASS( FaceFXAsset, Object, Engine )

	public:

		SkeletalMesh* DefaultSkelMesh; //offset = 60, size = 4
		Pointer FaceFXActor; //offset = 64, size = 4
		Array<Byte> RawFaceFXActorBytes; //offset = 68, size = 12
		Array<Byte> RawFaceFXSessionBytes; //offset = 80, size = 12
		Array<MorphTargetSet*> PreviewMorphSets; //offset = 92, size = 12
		Array<FaceFXAnimSet*> MountedFaceFXAnimSets; //offset = 104, size = 12
		Array<WwiseBaseSoundObject*> ReferencedSoundCues; //offset = 116, size = 12
		Int NumLoadErrors; //offset = 128, size = 4
		AnimSet* FxPreviewAnimset; //offset = 132, size = 4
		String FxPreviewAnimName; //offset = 136, size = 12
		Float FxPreviewAnimDelay; //offset = 148, size = 4
		Float FxPreviewAnimRate; //offset = 152, size = 4
		Float FxPreviewAnimOffset; //offset = 156, size = 4
		Array<FaceFXAsset*> LoopingTrackAssets; //offset = 160, size = 12

		void UnmountFaceFXAnimSet( FaceFXAnimSet* AnimSet );
		void MountFaceFXAnimSet( FaceFXAnimSet* AnimSet );
	};

	class FileChannel: public Channel
	{
		DECLARE_PACKAGE_CLASS( FileChannel, Channel, Engine )

	public:
	};

	enum FWFileType
	{
		FWFT_Log,
		FWFT_Stats,
		FWFT_HTML,
	};

	class FileWriter: public Info
	{
		DECLARE_PACKAGE_CLASS( FileWriter, Info, Engine )

	public:

		Pointer ArchivePtr; //offset = 508, size = 4
		String Filename; //offset = 512, size = 12
		Byte FileType; //offset = 524, size = 1

		void Destroyed();
		void Logf( String logString );
		void CloseFile();
		Bool OpenFile( String InFilename, Byte InFileType, String InExtension, Bool bUnique, Bool bIncludeTimeStamp );
	};

	class FileLog: public FileWriter
	{
		DECLARE_PACKAGE_CLASS( FileLog, FileWriter, Engine )

	public:

		void CloseLog();
		void OpenLog( String LogFilename, String extension, Bool bUnique );
	};

	class FloorToCeilingReachSpec: public ForcedReachSpec
	{
		DECLARE_PACKAGE_CLASS( FloorToCeilingReachSpec, ForcedReachSpec, Engine )

	public:
	};

	const char* NULLCHARACTER = 12;

	struct FontCharacter
	{
		Int StartU; //offset = 0, size = 4
		Int StartV; //offset = 4, size = 4
		Int USize; //offset = 8, size = 4
		Int VSize; //offset = 12, size = 4
		Byte TextureIndex; //offset = 16, size = 1
		Int VerticalOffset; //offset = 20, size = 4
	};

	class Font: public Object
	{
		DECLARE_PACKAGE_CLASS( Font, Object, Engine )

	public:

		Array<FontCharacter> Characters; //offset = 60, size = 12
		Array<Texture2D*> Textures; //offset = 72, size = 12
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> CharRemap; //offset = 84, size = 20
		Int IsRemapped; //offset = 104, size = 4
		Int Kerning; //offset = 108, size = 4
		FontImportOptionsData ImportOptions; //offset = 112, size = 136
		Int NumCharacters; //offset = 248, size = 4

		Float GetMaxCharHeight();
		Float GetAuthoredViewportHeight( Float ViewportHeight );
		Float GetScalingFactor( Float HeightTest );
		Int GetResolutionPageIndex( Float HeightTest );
	};

	enum EFontImportCharacterSet
	{
		FontICS_Default,
		FontICS_Ansi,
	};

	struct FontImportOptionsData
	{
		String FontName; //offset = 0, size = 12
		Float Height; //offset = 12, size = 4
		Bool bEnableAntialiasing: 1; //offset = 16, size = 4
		Bool bEnableBold: 1; //offset = 16, size = 4
		Bool bEnableItalic: 1; //offset = 16, size = 4
		Bool bEnableUnderline: 1; //offset = 16, size = 4
		Byte CharacterSet; //offset = 20, size = 1
		String Chars; //offset = 24, size = 12
		String UnicodeRange; //offset = 36, size = 12
		String CharsFilePath; //offset = 48, size = 12
		String CharsFileWildcard; //offset = 60, size = 12
		Bool bCreatePrintableOnly: 1; //offset = 72, size = 4
		LinearColor ForegroundColor; //offset = 76, size = 16
		Bool bEnableDropShadow: 1; //offset = 92, size = 4
		Int TexturePageWidth; //offset = 96, size = 4
		Int TexturePageMaxHeight; //offset = 100, size = 4
		Int XPadding; //offset = 104, size = 4
		Int YPadding; //offset = 108, size = 4
		Int ExtendBoxTop; //offset = 112, size = 4
		Int ExtendBoxBottom; //offset = 116, size = 4
		Int ExtendBoxRight; //offset = 120, size = 4
		Int ExtendBoxLeft; //offset = 124, size = 4
		Bool bEnableLegacyMode: 1; //offset = 128, size = 4
		Int Kerning; //offset = 132, size = 4
	};

	class FontImportOptions: public Object
	{
		DECLARE_PACKAGE_CLASS( FontImportOptions, Object, Engine )

	public:

		FontImportOptionsData Data; //offset = 60, size = 136
	};

	enum EWaveformFunction
	{
		WF_Constant,
		WF_LinearIncreasing,
		WF_LinearDecreasing,
		WF_Sin0to90,
	};

	struct WaveformSample
	{
		Byte LeftAmplitude; //offset = 0, size = 1
		Byte RightAmplitude; //offset = 1, size = 1
		Byte LeftFunction; //offset = 2, size = 1
		Byte RightFunction; //offset = 3, size = 1
		Float Duration; //offset = 4, size = 4
	};

	class ForceFeedbackWaveform: public Object
	{
		DECLARE_PACKAGE_CLASS( ForceFeedbackWaveform, Object, Engine )

	public:

		Bool bIsLooping: 1; //offset = 60, size = 4
		Array<WaveformSample> Samples; //offset = 64, size = 12
	};

	class ForceFeedbackManager: public Object
	{
		DECLARE_PACKAGE_CLASS( ForceFeedbackManager, Object, Engine )

	public:

		Bool bAllowsForceFeedback: 1; //offset = 60, size = 4
		Bool bIsPaused: 1; //offset = 60, size = 4
		ForceFeedbackWaveform* FFWaveform; //offset = 64, size = 4
		Int CurrentSample; //offset = 68, size = 4
		Float ElapsedTime; //offset = 72, size = 4
		Float ScaleAllWaveformsBy; //offset = 76, size = 4

		void PauseWaveform( Bool bPause );
		void StopForceFeedbackWaveform( ForceFeedbackWaveform* Waveform );
		void PlayForceFeedbackWaveform( ForceFeedbackWaveform* Waveform );
	};


	class GameInfo: public Info
	{
		DECLARE_PACKAGE_CLASS( GameInfo, Info, Engine )

	public:
		struct PendingMatch
		{
			/*
			EndState
			ProcessClientRegistrationCompletion
			StartArbitratedMatch
			ArbitrationTimeout
			ArbitrationRegistrationComplete
			RegisterServerForArbitration
			StartArbitrationRegistration
			StartMatch
			MatchIsInProgress
			*/
		};

		Bool bRestartLevel: 1; //offset = 508, size = 4
		Bool bPauseable: 1; //offset = 508, size = 4
		Bool bTeamGame: 1; //offset = 508, size = 4
		Bool bGameEnded: 1; //offset = 508, size = 4
		Bool bOverTime: 1; //offset = 508, size = 4
		Bool bDelayedStart: 1; //offset = 508, size = 4
		Bool bWaitingToStartMatch: 1; //offset = 508, size = 4
		Bool bChangeLevels: 1; //offset = 508, size = 4
		Bool bAlreadyChanged: 1; //offset = 508, size = 4
		Bool bLoggingGame: 1; //offset = 508, size = 4
		Bool bAdminCanPause: 1; //offset = 508, size = 4
		Bool bGameRestarted: 1; //offset = 508, size = 4
		Bool bLevelChange: 1; //offset = 508, size = 4
		Bool bKickLiveIdlers: 1; //offset = 508, size = 4
		Bool bUsingArbitration: 1; //offset = 508, size = 4
		Bool bHasArbitratedHandshakeBegun: 1; //offset = 508, size = 4
		Bool bNeedsEndGameHandshake: 1; //offset = 508, size = 4
		Bool bIsEndGameHandshakeComplete: 1; //offset = 508, size = 4
		Bool bHasEndGameHandshakeBegun: 1; //offset = 508, size = 4
		Bool bFixedPlayerStart: 1; //offset = 508, size = 4
		Bool bAutomatedPerfTesting: 1; //offset = 508, size = 4
		Bool bAutoContinueToNextRound: 1; //offset = 508, size = 4
		Bool bUsingAutomatedTestingMapList: 1; //offset = 508, size = 4
		Bool bDoingAFlyThrough: 1; //offset = 508, size = 4
		Bool bCheckingForFragmentation: 1; //offset = 508, size = 4
		Bool bCheckingForMemLeaks: 1; //offset = 508, size = 4
		Bool bDoFearCostFallOff: 1; //offset = 508, size = 4
		Bool bUseSeamlessTravel: 1; //offset = 508, size = 4
		Bool bHasNetworkError: 1; //offset = 508, size = 4
		Bool bRequiresPushToTalk: 1; //offset = 508, size = 4
		Int AutomatedPerfRemainingTime; //offset = 512, size = 4
		String AutomatedTestingExecCommandToRunAtStartMatch; //offset = 516, size = 12
		String BugLocString; //offset = 528, size = 12
		String BugRotString; //offset = 540, size = 12
		Array<PlayerController*> PendingArbitrationPCs; //offset = 552, size = 12
		Array<PlayerController*> ArbitrationPCs; //offset = 564, size = 12
		Float ArbitrationHandshakeTimeout; //offset = 576, size = 4
		Float GameDifficulty; //offset = 580, size = 4
		Int GoreLevel; //offset = 584, size = 4
		Float GameSpeed; //offset = 588, size = 4
		Class* DefaultPawnClass; //offset = 592, size = 4
		Class* ScoreBoardType; //offset = 596, size = 4
		Class* HUDType; //offset = 600, size = 4
		Int MaxSpectators; //offset = 604, size = 4
		Int MaxSpectatorsAllowed; //offset = 608, size = 4
		Int NumSpectators; //offset = 612, size = 4
		Int MaxPlayers; //offset = 616, size = 4
		Int MaxPlayersAllowed; //offset = 620, size = 4
		Int NumPlayers; //offset = 624, size = 4
		Int NumBots; //offset = 628, size = 4
		Int NumTravellingPlayers; //offset = 632, size = 4
		Int CurrentID; //offset = 636, size = 4
		String DefaultPlayerName; //offset = 640, size = 12
		String GameName; //offset = 652, size = 12
		Float FearCostFallOff; //offset = 664, size = 4
		Int GoalScore; //offset = 668, size = 4
		Int MaxLives; //offset = 672, size = 4
		Int TimeLimit; //offset = 676, size = 4
		Class* DeathMessageClass; //offset = 680, size = 4
		Class* GameMessageClass; //offset = 684, size = 4
		Mutator* BaseMutator; //offset = 688, size = 4
		Class* AccessControlClass; //offset = 692, size = 4
		AccessControl* AccessControl; //offset = 696, size = 4
		GameRules* GameRulesModifiers; //offset = 700, size = 4
		Class* BroadcastHandlerClass; //offset = 704, size = 4
		BroadcastHandler* BroadcastHandler; //offset = 708, size = 4
		Class* PlayerControllerClass; //offset = 712, size = 4
		Class* PlayerReplicationInfoClass; //offset = 716, size = 4
		String DialogueManagerClass; //offset = 720, size = 12
		DialogueManager* DialogueManager; //offset = 732, size = 4
		Class* GameReplicationInfoClass; //offset = 736, size = 4
		GameReplicationInfo* GameReplicationInfo; //offset = 740, size = 4
		Float MaxIdleTime; //offset = 744, size = 4
		Float MaxTimeMargin; //offset = 748, size = 4
		Float TimeMarginSlack; //offset = 752, size = 4
		Float MinTimeMargin; //offset = 756, size = 4
		Array<PlayerReplicationInfo*> InactivePRIArray; //offset = 760, size = 12
		Array<Pausers> Pausers; //offset = 772, size = 12
		OnlineSubsystem* OnlineSub; //offset = 784, size = 4
		GameInterface GameInterface; //offset = 788, size = 8
		OnlineGameSettings* GameSettings; //offset = 796, size = 4
		Class* OnlineStatsWriteClass; //offset = 800, size = 4
		CoverReplicator* CoverReplicatorBase; //offset = 804, size = 4
		Class* OnlineGameSettingsClass; //offset = 808, size = 4
		String ServerOptions; //offset = 812, size = 12
		__CanUnpause__Delegate __CanUnpause__Delegate; //offset = 824, size = 12

		void OnServerCreateComplete( Bool bWasSuccessful );
		void RegisterServer();
		void OnLoginChange();
		void OnLoginFailed( Byte LocalUserNum, Byte ErrorCode );
		void ClearAutoLoginDelegates();
		Bool ProcessServerLogin();
		void MatineeCancelled();
		void RecalculateSkillRating( Int Index, Array<UniqueNetId> Players, UniqueNetId ZeroId );
		void UpdateGameplayMuteList( PlayerController* PC );
		void NotifyArbitratedMatchEnd( PlayerController* PC );
		void ServerWriteArbitrationEndGameData();
		void ProcessClientDataWriteCompletion( PlayerController* PC, Int FoundIndex );
		void ProcessEndGameHandshake( Int Index );
		Bool MatchIsInProgress();
		void ArbitrationRegistrationComplete( Bool bWasSuccessful );
		void RegisterServerForArbitration();
		void StartArbitratedMatch();
		void StartArbitrationRegistration();
		void ProcessClientRegistrationCompletion( PlayerController* PC, Bool bWasSuccessful );
		void UpdateGameSettingsCounts();
		void HandleSeamlessTravelPlayer( Controller* C, Rotator StartRotation, NavigationPoint* StartSpot, PlayerController* PC, PlayerController* NewPC, PlayerReplicationInfo* OldPRI );
		void UpdateGameSettings();
		void PostSeamlessTravel( Controller* C );
		void SwapPlayerControllers( PlayerController* OldPC, PlayerController* NewPC );
		void GetSeamlessTravelActorList( Bool bToEntry, Array<Actor*> ActorList, Int I );
		void OverridePRI( PlayerController* PC, PlayerReplicationInfo* OldPRI );
		Bool FindInactivePRI( PlayerController* PC, String NewNetworkAddress, String NewName, Int I, PlayerReplicationInfo* OldPRI, Bool bIsConsole );
		void AddInactivePRI( PlayerReplicationInfo* PRI, PlayerController* PC, Int I, PlayerReplicationInfo* NewPRI, Bool bIsConsole );
		void PostCommitMapChange();
		void PreCommitMapChange( String PreviousMapName, String NextMapName );
		Bool AllowCheats( PlayerController* P );
		Bool AllowMutator( String MutatorClassName );
		Bool PlayerCanRestart( PlayerController* aPlayer );
		Bool PlayerCanRestartGame( PlayerController* aPlayer );
		void KillBots();
		void DriverLeftVehicle( Vehicle* V, Pawn* P );
		Bool CanLeaveVehicle( Vehicle* V, Pawn* P );
		void DriverEnteredVehicle( Vehicle* V, Pawn* P );
		String ParseMessageString( Controller* Who, String Message );
		void ModifyScoreKill( Controller* Killer, Controller* Other );
		void ScoreKill( Controller* Killer, Controller* Other );
		Bool CheckScore( PlayerReplicationInfo* Scorer );
		void ScoreObjective( PlayerReplicationInfo* Scorer, Int Score );
		void AddObjectiveScore( PlayerReplicationInfo* Scorer, Int Score );
		Float RatePlayerStart( PlayerStart* P, Byte Team, Controller* Player );
		PlayerStart* ChoosePlayerStart( Controller* Player, Byte InTeam, PlayerStart* P, PlayerStart* BestStart, Float BestRating, Float NewRating, Byte Team );
		NavigationPoint* FindPlayerStart( Controller* Player, Byte InTeam, String IncomingName, NavigationPoint* N, NavigationPoint* BestStart, Teleporter* Tel );
		Bool ShouldSpawnAtStartSpot( Controller* Player );
		void EndLogging( String Reason );
		void EndGame( PlayerReplicationInfo* Winner, String Reason, Int Index );
		void WriteOnlinePlayerScores( Int Index, Array<OnlinePlayerScore> PlayerScores );
		void WriteOnlineStats();
		Bool CheckEndGame( PlayerReplicationInfo* Winner, String Reason, Controller* P );
		Bool CheckModifiedEndGame( PlayerReplicationInfo* Winner, String Reason );
		void BroadcastLocalizedTeam( Int TeamIndex, Actor* Sender, Class* Message, Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject );
		void BroadcastLocalized( Actor* Sender, Class* Message, Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject );
		void BroadcastTeam( Controller* Sender, String msg, Name Type );
		void Broadcast( Actor* Sender, String msg, Name Type );
		void RestartGame( String NextMap );
		Bool GetTravelType();
		String GetNextMap();
		void SendPlayer( PlayerController* aPlayer, String URL );
		Byte PickTeam( Byte Current, Controller* C );
		Bool ChangeTeam( Controller* Other, Int N, Bool bNewTeam );
		void ChangeName( Controller* Other, String S, Bool bNameChange );
		void DiscardInventory( Pawn* Other, Controller* Killer );
		Bool PickupQuery( Pawn* Other, Class* ItemClass, Actor* Pickup, Byte bAllowPickup );
		Bool ShouldRespawn( PickupFactory* Other );
		Bool CheckRelevance( Actor* Other );
		void ReduceDamage( Int Damage, Pawn* injured, Controller* InstigatedBy, Vector HitLocation, Vector Momentum, Class* DamageType, Int OriginalDamage );
		Bool CanSpectate( PlayerController* Viewer, PlayerReplicationInfo* ViewTarget );
		void KickBan( String S );
		void Kick( String S );
		String ParseKillMessage( String KillerName, String VictimName, String DeathMessage );
		void BroadcastDeathMessage( Controller* Killer, Controller* Other, Class* DamageType );
		Bool PreventDeath( Pawn* KilledPawn, Controller* Killer, Class* DamageType, Vector HitLocation );
		void Killed( Controller* Killer, Controller* KilledPlayer, Pawn* KilledPawn, Class* DamageType );
		void NotifyKilled( Controller* Killer, Controller* Killed, Pawn* KilledPawn, Controller* C );
		void SetPlayerDefaults( Pawn* PlayerPawn );
		void Mutate( String MutateString, PlayerController* Sender );
		void AddDefaultInventory( Pawn* P );
		void AcceptInventory( Pawn* PlayerPawn );
		void Logout( Controller* Exiting, PlayerController* PC, Int PCIndex );
		void PreExit();
		void PostLogin( PlayerController* NewPlayer, String Address, String StatGuid, Int pos );
		void ReplicateStreamingStatus( PlayerController* PC, Int LevelIndex, LevelStreaming* TheLevel );
		Class* GetDefaultPlayerClass( Controller* C );
		Pawn* SpawnDefaultPawnFor( Controller* NewPlayer, NavigationPoint* StartSpot, Class* DefaultPlayerClass, Rotator StartRotation, Pawn* ResultPawn );
		void RestartPlayer( Controller* NewPlayer, NavigationPoint* StartSpot, Int TeamNum, Int idx, Array<SequenceObject*> Events, SeqEvent_PlayerSpawned* SpawnedEvent );
		void StartBots( Controller* P );
		void StartHumans( PlayerController* P );
		void OnStartOnlineGameComplete( Bool bWasSuccessful, PlayerController* PC, String StatGuid );
		void StartOnlineGame();
		void StartMatch( Actor* A );
		PlayerController* Login( String Portal, String Options, String ErrorMessage, NavigationPoint* StartSpot, PlayerController* NewPlayer, String InName, String inCharacter, String InPassword, Byte InTeam, Bool bSpectator, Bool bAdmin, Bool bPerfTesting, Rotator SpawnRotation );
		Bool AtCapacity( Bool bSpectator );
		void PreLogin( String Options, String Address, String ErrorMessage, Bool bSpectator, Bool bPerfTesting );
		Bool RequiresPassword();
		void ProcessServerTravel( String URL, Bool bAbsolute, PlayerController* P, PlayerController* LocalPlayer, Bool bSeamless );
		String GetBeaconText();
		void RemoveMutator( Mutator* MutatorToRemove, Mutator* M );
		void AddGameRules( Class* GRClass );
		void AddMutator( String mutname, Bool bUserAdded, Class* mutClass, Mutator* mut, Int I );
		void InitGame( String Options, String ErrorMessage, String InOpt, String LeftOpt, Int pos, Class* ACClass );
		Class* SetGameType( String MapName, String Options );
		Int GetIntOption( String Options, String ParseString, Int CurrentValue, String InOpt );
		Bool HasOption( String Options, String InKey, String Pair, String Key, String Value );
		String ParseOption( String Options, String InKey, String Pair, String Key, String Value );
		void GetKeyValue( String Pair, String Key, String Value );
		Bool GrabOption( String Options, String Result );
		void SetGameSpeed( Float T );
		void DebugPause( Int Index, CanUnpauseCriteriaMet CanUnpauseCriteriaMet );
		void ClearPause( Int Index, CanUnpauseCriteriaMet CanUnpauseCriteriaMet );
		Bool SetPause( PlayerController* PC, CanUnpauseDelegate CanUnpauseDelegate, Int FoundIndex );
		Bool CanUnpause();
		Int GetServerPort(, String S, Int I );
		Int GetNumPlayers();
		String GetNetworkNumber();
		void InitGameReplicationInfo();
		void KickIdler( PlayerController* PC );
		void GameEnding();
		void NotifyNavigationChanged( NavigationPoint* N );
		void DoNavFearCostFallOff();
		void Timer();
		void ResetLevel( Controller* C, Actor* A, Sequence* GameSeq, Array<SequenceObject*> AllSeqEvents, Int I );
		Bool ShouldReset( Actor* ActorToReset );
		void Reset();
		void PostBeginPlay();
		CoverReplicator* GetCoverReplicator();
		Bool UseLowGore( WorldInfo* WI );
		String FindPlayerByID( Int PlayerID, PlayerReplicationInfo* PRI );
		void PreBeginPlay();
	};

	class ReplicationInfo: public Info
	{
		DECLARE_PACKAGE_CLASS( ReplicationInfo, Info, Engine )

	public:
	};

	class GameReplicationInfo: public ReplicationInfo
	{
		DECLARE_PACKAGE_CLASS( GameReplicationInfo, ReplicationInfo, Engine )

	public:

		Class* GameClass; //offset = 508, size = 4
		CurrentGameDataStore* CurrentGameData; //offset = 512, size = 4
		Bool bStopCountDown: 1; //offset = 516, size = 4
		Bool bMatchHasBegun: 1; //offset = 516, size = 4
		Bool bMatchIsOver: 1; //offset = 516, size = 4
		Bool bNeedsOnlineCleanup: 1; //offset = 516, size = 4
		Bool bIsArbitrated: 1; //offset = 516, size = 4
		Bool bTrackStats: 1; //offset = 516, size = 4
		Int RemainingTime; //offset = 520, size = 4
		Int ElapsedTime; //offset = 524, size = 4
		Int RemainingMinute; //offset = 528, size = 4
		Float SecondCount; //offset = 532, size = 4
		Int GoalScore; //offset = 536, size = 4
		Int TimeLimit; //offset = 540, size = 4
		Int MaxLives; //offset = 544, size = 4
		Array<TeamInfo*> Teams; //offset = 548, size = 12
		String ServerName; //offset = 560, size = 12
		String ShortName; //offset = 572, size = 12
		String AdminName; //offset = 584, size = 12
		String AdminEmail; //offset = 596, size = 12
		Int ServerRegion; //offset = 608, size = 4
		String MessageOfTheDay; //offset = 612, size = 12
		Actor* Winner; //offset = 624, size = 4
		Array<PlayerReplicationInfo*> PRIArray; //offset = 628, size = 12
		Array<PlayerReplicationInfo*> InactivePRIArray; //offset = 640, size = 12
		Int MatchID; //offset = 652, size = 4

		Bool PreventPause();
		Bool IsCoopMultiplayerGame();
		Bool IsMultiplayerGame();
		void OnlineSession_EndSession( Bool bForced, GI GI );
		void OnlineSession_EndMatch( GI GI );
		void OnlineSession_StartMatch( GI GI );
		ReturnValue GetOnlineGameInterface(, OnlineSubsystem* OnlineSub );
		void EndGame();
		void StartMatch();
		void CleanupGameDataStore();
		void InitializeGameDataStore( DataStoreClient* DataStoreManager );
		void ReplicatedEvent( Name VarName );
		void SortPRIArray( Int I, Int J, PlayerReplicationInfo* tmp );
		Bool InOrder( PlayerReplicationInfo* P1, PlayerReplicationInfo* P2 );
		void GetPRIArray( Array<PlayerReplicationInfo*> pris, Int I, Int Num );
		void SetTeam( Int Index, TeamInfo* TI );
		void RemovePRI( PlayerReplicationInfo* PRI, Int I );
		void AddPRI( PlayerReplicationInfo* PRI, Int I );
		PlayerReplicationInfo* FindPlayerByID( Int PlayerID, Int I );
		Bool OnSameTeam( Actor* A, Actor* B );
		void Timer();
		void Destroyed();
		void Reset();
		void PostBeginPlay( PlayerReplicationInfo* PRI, TeamInfo* TI );
	};

	enum ESafeZoneType
	{
		eSZ_TOP,
		eSZ_BOTTOM,
		eSZ_LEFT,
	};

	enum ESplitScreenType
	{
		eSST_NONE,
		eSST_2P_HORIZONTAL,
		eSST_2P_VERTICAL,
		eSST_3P_FAVOR_TOP,
		eSST_3P_FAVOR_BOTTOM,
	};

	struct DebugDisplayProperty
	{
		Object* Obj; //offset = 0, size = 4
		Name PropertyName; //offset = 4, size = 8
		Bool bSpecialProperty: 1; //offset = 12, size = 4
	};

	struct PerPlayerSplitscreenData
	{
		Float SizeX; //offset = 0, size = 4
		Float SizeY; //offset = 4, size = 4
		Float OriginX; //offset = 8, size = 4
		Float OriginY; //offset = 12, size = 4
	};

	struct SplitscreenData
	{
		Array<PerPlayerSplitscreenData> PlayerData; //offset = 0, size = 12
	};

	struct TitleSafeZoneArea
	{
		Float MaxPercentX; //offset = 0, size = 4
		Float MaxPercentY; //offset = 4, size = 4
		Float RecommendedPercentX; //offset = 8, size = 4
		Float RecommendedPercentY; //offset = 12, size = 4
	};

	class GameViewportClient: public Object
	{
		DECLARE_PACKAGE_CLASS( GameViewportClient, Object, Engine )

	public:

		Pointer VfTable_FViewportClient; //offset = 60, size = 4
		Pointer VfTable_FExec; //offset = 64, size = 4
		Pointer VfTable_FCallbackEventDevice; //offset = 68, size = 4
		Pointer Viewport; //offset = 72, size = 4
		Pointer ViewportFrame; //offset = 76, size = 4
		Array<Interaction*> GlobalInteractions; //offset = 80, size = 12
		Class* UIControllerClass; //offset = 92, size = 4
		UIInteraction* UIController; //offset = 96, size = 4
		String BioScaleFormManagerClassName; //offset = 100, size = 12
		BioSFManager* m_pScaleFormManager; //offset = 112, size = 4
		Console* ViewportConsole; //offset = 116, size = 4
		QWord ShowFlags; //offset = 120, size = 8
		String LoadingMessage; //offset = 128, size = 12
		String SavingMessage; //offset = 140, size = 12
		String ConnectingMessage; //offset = 152, size = 12
		String PausedMessage; //offset = 164, size = 12
		String PrecachingMessage; //offset = 176, size = 12
		Bool bShowTitleSafeZone: 1; //offset = 188, size = 4
		TitleSafeZoneArea TitleSafeZone; //offset = 192, size = 16
		Bool bDisplayingUIMouseCursor: 1; //offset = 208, size = 4
		Bool bUIMouseCaptureOverride: 1; //offset = 208, size = 4
		String LoadScreenTexture; //offset = 212, size = 12
		Array<SplitscreenData> SplitscreenInfo; //offset = 224, size = 12
		Byte SplitscreenType; //offset = 236, size = 1
		Byte Default2PSplitType; //offset = 237, size = 1
		Byte Default3PSplitType; //offset = 238, size = 1
		Bool bDisableWorldRendering: 1; //offset = 240, size = 4
		Array<DebugDisplayProperty> DebugProperties; //offset = 244, size = 12
		__HandleInputKey__Delegate __HandleInputKey__Delegate; //offset = 256, size = 12
		__HandleInputAxis__Delegate __HandleInputAxis__Delegate; //offset = 268, size = 12
		__HandleInputChar__Delegate __HandleInputChar__Delegate; //offset = 280, size = 12

		void RemoveLocalPlayer( LocalPlayer* ExistingPlayer, Int Index );
		void AddLocalPlayer( LocalPlayer* NewPlayer, Int InsertIndex );
		void NotifyPlayerRemoved( Int PlayerIndex, LocalPlayer* RemovedPlayer, Int InteractionIndex );
		void NotifyPlayerAdded( Int PlayerIndex, LocalPlayer* AddedPlayer, Int InteractionIndex );
		void DrawTransitionMessage( Canvas* Canvas, String Message, Float XL, Float YL );
		void DrawTransitionScreen( Canvas* Canvas, Texture2D* oTexture );
		void DrawTransition( Canvas* Canvas );
		void PostRender( Canvas* Canvas );
		void DrawTitleSafeArea( Canvas* Canvas );
		void Tick( Float DeltaTime );
		void CalculatePixelCenter( Float out_CenterX, Float out_CenterY, LocalPlayer* LPlayer, Canvas* Canvas, Bool bUseMaxPercent, Int LocalPlayerIndex, Float HorizSafeZoneValue, Float VertSafeZoneValue );
		Float CalculateDeadZone( LocalPlayer* LPlayer, Byte SZType, Canvas* Canvas, Bool bUseMaxPercent, Bool bHasSafeZone, Int LocalPlayerIndex, Float HorizSafeZoneValue, Float VertSafeZoneValue );
		void CalculateSafeZoneValues( Float out_Horizontal, Float out_Vertical, Canvas* Canvas, Int LocalPlayerIndex, Bool bUseMaxPercent, Float ScreenWidth, Float ScreenHeight, Float XSafeZoneToUse, Float YSafeZoneToUse );
		void GetPixelSizeOfScreen( Float out_Width, Float out_Height, Canvas* Canvas, Int LocalPlayerIndex );
		Bool HasRightSafeZone( Int LocalPlayerIndex );
		Bool HasLeftSafeZone( Int LocalPlayerIndex );
		Bool HasBottomSafeZone( Int LocalPlayerIndex );
		Bool HasTopSafeZone( Int LocalPlayerIndex );
		Int ConvertLocalPlayerToGamePlayerIndex( LocalPlayer* LPlayer );
		void GetSubtitleRegion( Vector2D MinPos, Vector2D MaxPos );
		void LayoutPlayers();
		void SetSplitscreenConfiguration( Byte SplitType, Int idx );
		void GameSessionEnded( Int I );
		Int InsertInteraction( Interaction* NewInteraction, Int InIndex, Int Result );
		Bool Init( String OutError, Class* BioScaleFormManagerClass, PlayerManagerInteraction* PlayerInteraction );
		void SetConsoleTarget( Int PlayerIndex );
		void ShowTitleSafeArea();
		void SetSplit( Int Mode );
		void DebugRemovePlayer( Int ControllerId, LocalPlayer* ExPlayer );
		void SSSwapControllers( Int idx, Int TmpControllerID );
		void DebugCreatePlayer( Int ControllerId, String Error );
		LocalPlayer* FindPlayerByControllerId( Int ControllerId, Int PlayerIndex );
		Bool RemovePlayer( LocalPlayer* ExPlayer );
		LocalPlayer* CreatePlayer( Int ControllerId, String OutError, Bool bSpawnActor, LocalPlayer* NewPlayer );
		Bool SetLockInputToController( Bool b_iValue );
		Bool GetLockInputToController();
		Bool IsFullScreenViewport();
		void GetViewportSize( Vector2D out_ViewportSize );
		String ConsoleCommand( String Command );
		Bool HandleInputChar( Int ControllerId, String Unicode );
		Bool HandleInputAxis( Int ControllerId, Name Key, Float Delta, Float DeltaTime, Bool bGamepad );
		Bool HandleInputKey( Int ControllerId, Name Key, Byte EventType, Float AmountDepressed, Bool bGamepad );
	};

	class GravityVolume: public PhysicsVolume
	{
		DECLARE_PACKAGE_CLASS( GravityVolume, PhysicsVolume, Engine )

	public:

		Float GravityZ; //offset = 628, size = 4
		Float RBPhysicsGravityScaling; //offset = 632, size = 4
	};

	class GuidCache: public Object
	{
		DECLARE_PACKAGE_CLASS( GuidCache, Object, Engine )

	public:
	};

	class HeightFogComponent: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( HeightFogComponent, ActorComponent, Engine )

	public:

		Bool bEnabled: 1; //offset = 88, size = 4
		Float Height; //offset = 92, size = 4
		Float Density; //offset = 96, size = 4
		Float LightBrightness; //offset = 100, size = 4
		Color LightColor; //offset = 104, size = 4
		Float ExtinctionDistance; //offset = 108, size = 4
		Float StartDistance; //offset = 112, size = 4

		void SetEnabled( Bool bSetEnabled );
	};

	struct HudLocalizedMessage
	{
		Class* Message; //offset = 0, size = 4
		String StringMessage; //offset = 4, size = 12
		Int Switch; //offset = 16, size = 4
		Float EndOfLife; //offset = 20, size = 4
		Float Lifetime; //offset = 24, size = 4
		Float PosY; //offset = 28, size = 4
		Color DrawColor; //offset = 32, size = 4
		Int FontSize; //offset = 36, size = 4
		Font* StringFont; //offset = 40, size = 4
		Float DX; //offset = 44, size = 4
		Float DY; //offset = 48, size = 4
		Bool Drawn: 1; //offset = 52, size = 4
		Int Count; //offset = 56, size = 4
		Object* OptionalObject; //offset = 60, size = 4
	};

	struct ConsoleMessage
	{
		String Text; //offset = 0, size = 12
		Color TextColor; //offset = 12, size = 4
		Float MessageLife; //offset = 16, size = 4
		PlayerReplicationInfo* PRI; //offset = 20, size = 4
	};

	class HUD: public Actor
	{
		DECLARE_PACKAGE_CLASS( HUD, Actor, Engine )

	public:

		Color WhiteColor; //offset = 508, size = 4
		Color GreenColor; //offset = 512, size = 4
		Color RedColor; //offset = 516, size = 4
		PlayerController* PlayerOwner; //offset = 520, size = 4
		HUD* HudOwner; //offset = 524, size = 4
		PlayerReplicationInfo* ViewedInfo; //offset = 528, size = 4
		Float ProgressFadeTime; //offset = 532, size = 4
		Color MOTDColor; //offset = 536, size = 4
		ScoreBoard* ScoreBoard; //offset = 540, size = 4
		Bool LostFocusPaused: 1; //offset = 544, size = 4
		Bool bShowHUD: 1; //offset = 544, size = 4
		Bool bShowScores: 1; //offset = 544, size = 4
		Bool bShowDebugInfo: 1; //offset = 544, size = 4
		Bool bShowBadConnectionAlert: 1; //offset = 544, size = 4
		Bool bMessageBeep: 1; //offset = 544, size = 4
		Float HudCanvasScale; //offset = 548, size = 4
		Array<ConsoleMessage> ConsoleMessages; //offset = 552, size = 12
		Color ConsoleColor; //offset = 564, size = 4
		Int ConsoleMessageCount; //offset = 568, size = 4
		Int ConsoleFontSize; //offset = 572, size = 4
		Int MessageFontOffset; //offset = 576, size = 4
		Int MaxHUDAreaMessageCount; //offset = 580, size = 4
		HudLocalizedMessage LocalMessages[8]; //offset = 584, size = 64
		Float ConsoleMessagePosX; //offset = 1096, size = 4
		Float ConsoleMessagePosY; //offset = 1100, size = 4
		Canvas* Canvas; //offset = 1104, size = 4
		Float LastHUDRenderTime; //offset = 1108, size = 4
		Float RenderDelta; //offset = 1112, size = 4
		Float SizeX; //offset = 1116, size = 4
		Float SizeY; //offset = 1120, size = 4
		Float CenterX; //offset = 1124, size = 4
		Float CenterY; //offset = 1128, size = 4
		Float RatioX; //offset = 1132, size = 4
		Float RatioY; //offset = 1136, size = 4
		Array<Name> DebugDisplay; //offset = 1140, size = 12

		void OnLostFocusPause( Bool Enable );
		void PlayerOwnerDied();
		Color GetRYGColorRamp( Float Pct, Color GYRColor );
		Font* GetFontSizeIndex( Int FontSize );
		void DisplayLocalMessages( Float PosY, Float DY, Float DX, Int I, Int J, Int LocalMessagesArrayCount, Int AreaMessageCount, Float FadeValue, Int FontSize );
		void DrawMessageText( HudLocalizedMessage LocalMessage, Float ScreenX, Float ScreenY );
		void DrawMessage( Int I, Float PosY, Float DX, Float DY, Float FadeValue, Float ScreenX, Float ScreenY );
		void GetScreenCoords( Float PosY, Float ScreenX, Float ScreenY, HudLocalizedMessage InMessage );
		void AddLocalizedMessage( Int Index, Class* InMessageClass, String CriticalString, Int Switch, Float Position, Float Lifetime, Int FontSize, Color DrawColor, Int MessageCount, Object* OptionalObject );
		void LocalizedMessage( Class* InMessageClass, PlayerReplicationInfo* RelatedPRI, String CriticalString, Int Switch, Float Position, Float Lifetime, Int FontSize, Color DrawColor, Object* OptionalObject, Int I, Int LocalMessagesArrayCount, Int MessageCount );
		void AddConsoleMessage( String M, Class* InMessageClass, PlayerReplicationInfo* PRI, Float Lifetime, Int idx, Int MsgIdx );
		void DisplayConsoleMessages( Int idx, Int XPos, Int YPos, Float XL, Float YL );
		void Message( PlayerReplicationInfo* PRI, String msg, Name MsgType, Float Lifetime );
		void ClearMessage( HudLocalizedMessage M );
		void DisplayBadConnectionAlert();
		void DisplayProgressMessage( Int I, Int LineCount, Float FontDX, Float FontDY, Float X, Float Y, Int Alpha, Float TimeLeft );
		void DrawEngineHUD( Float CrosshairSize, Float XL, Float YL, Float Y, String myText );
		void DrawDemoHUD();
		void DrawHUD();
		void PostRender( Float XL, Float YL, Float YPos );
		void PreCalcValues();
		void DrawRoute( Pawn* Target, Int I, Controller* C, Vector Start, Vector RealStart, Bool bPath, Actor* FirstRouteCache );
		void FXStop( Class* aClass, Pawn* P, Pawn* ClosestPawn, Float ThisDistance, Float ClosestPawnDistance );
		void FXPlay( Class* aClass, String FXAnimPath, Pawn* P, Pawn* ClosestPawn, Float ThisDistance, Float ClosestPawnDistance, String FxAnimGroup, String FxAnimName, Int dotPos );
		Bool ShouldDisplayDebug( Name DebugType, Int I );
		void ShowDebug( Name DebugType, Int I, Bool bFound );
		void SetShowScores( Bool bNewValue );
		void ShowScores();
		void ShowHUD();
		void ToggleHUD();
		void Destroyed();
		void SpawnScoreBoard( Class* ScoringType );
		void PostBeginPlay();
		void Draw2DLine( Int X1, Int Y1, Int X2, Int Y2, Color LineColor );
		void Draw3DLine( Vector Start, Vector End, Color LineColor );
	};

	class InternetInfo: public Info
	{
		DECLARE_PACKAGE_CLASS( InternetInfo, Info, Engine )

	public:

		String GetBeaconText( Int I );
		String GetBeaconAddress( Int I );
	};

	struct CheckpointRecord
	{
		Vector Location; //offset = 0, size = 12
		Rotator Rotation; //offset = 12, size = 12
		Bool bIsShutdown: 1; //offset = 24, size = 4
	};

	class InterpActor: public DynamicSMActor
	{
		DECLARE_PACKAGE_CLASS( InterpActor, DynamicSMActor, Engine )

	public:

		NavigationPoint* MyMarker; //offset = 564, size = 4
		Bool bMonitorMover: 1; //offset = 568, size = 4
		Bool bMonitorZVelocity: 1; //offset = 568, size = 4
		Bool bDestroyProjectilesOnEncroach: 1; //offset = 568, size = 4
		Bool bContinueOnEncroachPhysicsObject: 1; //offset = 568, size = 4
		Bool bStopOnEncroach: 1; //offset = 568, size = 4
		Float MaxZVelocity; //offset = 572, size = 4
		Float StayOpenTime; //offset = 576, size = 4
		SoundCue* OpenSound; //offset = 580, size = 4
		SoundCue* OpeningAmbientSound; //offset = 584, size = 4
		SoundCue* OpenedSound; //offset = 588, size = 4
		SoundCue* CloseSound; //offset = 592, size = 4
		SoundCue* ClosingAmbientSound; //offset = 596, size = 4
		SoundCue* ClosedSound; //offset = 600, size = 4
		AudioComponent* AmbientSoundComponent; //offset = 604, size = 4

		void ApplyCheckpointRecord( CheckpointRecord Record );
		void CreateCheckpointRecord( CheckpointRecord Record );
		void InterpolationChanged( SeqAct_Interp* InterpAction );
		void InterpolationFinished( SeqAct_Interp* InterpAction, DoorMarker* DoorNav, Controller* C, SoundCue* StoppedSound );
		void InterpolationStarted( SeqAct_Interp* InterpAction );
		void PlayMovingSound( Bool bClosing, SoundCue* SoundToPlay, SoundCue* AmbientToPlay );
		void FinishedOpen( Int I, SeqEvent_Mover* MoverEvent );
		void Restart( Actor* A );
		void Detach( Actor* Other, Int I, SeqEvent_Mover* MoverEvent );
		void Attach( Actor* Other, Int I, SeqEvent_Mover* MoverEvent );
		void RanInto( Actor* Other, Int I, SeqEvent_Mover* MoverEvent );
		Bool EncroachingOn( Actor* Other, Int I, SeqEvent_Mover* MoverEvent, Pawn* P, Vector Height, Vector HitLocation, Vector HitNormal, Bool bLandingPawn );
		void PostBeginPlay();
	};

	struct CurveEdEntry
	{
		Object* CurveObject; //offset = 0, size = 4
		Color CurveColor; //offset = 4, size = 4
		String CurveName; //offset = 8, size = 12
		Int bHideCurve; //offset = 20, size = 4
		Int bColorCurve; //offset = 24, size = 4
		Int bFloatingPointColorCurve; //offset = 28, size = 4
		Int bClamp; //offset = 32, size = 4
		Float ClampLow; //offset = 36, size = 4
		Float ClampHigh; //offset = 40, size = 4
	};

	struct CurveEdTab
	{
		String TabName; //offset = 0, size = 12
		Array<CurveEdEntry> Curves; //offset = 12, size = 12
		Float ViewStartInput; //offset = 24, size = 4
		Float ViewEndInput; //offset = 28, size = 4
		Float ViewStartOutput; //offset = 32, size = 4
		Float ViewEndOutput; //offset = 36, size = 4
	};

	class InterpCurveEdSetup: public Object
	{
		DECLARE_PACKAGE_CLASS( InterpCurveEdSetup, Object, Engine )

	public:

		Array<CurveEdTab> Tabs; //offset = 60, size = 12
		Int ActiveTab; //offset = 72, size = 4
	};

	class InterpTrack: public Object
	{
		DECLARE_PACKAGE_CLASS( InterpTrack, Object, Engine )

	public:

		Pointer VfTable_FInterpEdInputInterface; //offset = 60, size = 4
		Pointer CurveEdVTable; //offset = 64, size = 4
		Class* TrackInstClass; //offset = 68, size = 4
		String TrackTitle; //offset = 72, size = 12
		Bool bOnePerGroup: 1; //offset = 84, size = 4
		Bool bDirGroupOnly: 1; //offset = 84, size = 4
		Bool bDisableTrack: 1; //offset = 84, size = 4
		Bool bIsAnimControlTrack: 1; //offset = 84, size = 4
		Bool bImportedTrack: 1; //offset = 84, size = 4
	};

	class Inventory: public Actor
	{
		DECLARE_PACKAGE_CLASS( Inventory, Actor, Engine )

	public:

		Inventory* Inventory; //offset = 508, size = 4
		InventoryManager* InvManager; //offset = 512, size = 4
		String ItemName; //offset = 516, size = 12
		Bool bRenderOverlays: 1; //offset = 528, size = 4
		Bool bReceiveOwnerEvents: 1; //offset = 528, size = 4
		Bool bDropOnDeath: 1; //offset = 528, size = 4
		Bool bDelayedSpawn: 1; //offset = 528, size = 4
		Bool bPredictRespawns: 1; //offset = 528, size = 4
		Float RespawnTime; //offset = 532, size = 4
		Float MaxDesireability; //offset = 536, size = 4
		String PickupMessage; //offset = 540, size = 12
		SoundCue* PickupSound; //offset = 552, size = 4
		String PickupForce; //offset = 556, size = 12
		Class* DroppedPickupClass; //offset = 568, size = 4
		PrimitiveComponent* DroppedPickupMesh; //offset = 572, size = 4
		PrimitiveComponent* PickupFactoryMesh; //offset = 576, size = 4
		ParticleSystemComponent* DroppedPickupParticles; //offset = 580, size = 4

		void OwnerEvent( Name EventName );
		String GetLocalString( Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI );
		void DropFrom( Vector StartLocation, Vector StartVelocity, DroppedPickup* P );
		Bool DenyPickupQuery( Class* ItemClass, Actor* Pickup );
		void ItemRemovedFromInvManager();
		void ClientGivenTo( Pawn* NewOwner, Bool bDoNotActivate );
		void GivenTo( Pawn* thisPawn, Bool bDoNotActivate );
		void AnnouncePickup( Pawn* Other );
		void GiveTo( Pawn* Other );
		Float DetourWeight( Pawn* Other, Float PathWeight );
		Float BotDesireability( Actor* PickupHolder, Pawn* P, Controller* C, Inventory* AlreadyHas, Float desire );
		void Destroyed();
		String GetHumanReadableName();
		void ActiveRenderOverlays( HUD* H );
		void RenderOverlays( HUD* H );
	};

	class InventoryManager: public Actor
	{
		DECLARE_PACKAGE_CLASS( InventoryManager, Actor, Engine )

	public:

		Inventory* InventoryChain; //offset = 508, size = 4
		Weapon* PendingWeapon; //offset = 512, size = 4
		Weapon* LastAttemptedSwitchToWeapon; //offset = 516, size = 4
		Bool bMustHoldWeapon: 1; //offset = 520, size = 4
		Array<Int> PendingFire; //offset = 524, size = 12

		void ClientSyncWeapon( Weapon* NewWeapon, Weapon* OldWeapon );
		void ClientWeaponSet( Weapon* NewWeapon, Bool bOptionalSet, Weapon* OldWeapon );
		void ChangedWeapon( Weapon* OldWeapon );
		Bool CancelWeaponChange();
		void ServerSetCurrentWeapon( Weapon* DesiredWeapon, Weapon* PrevWeapon );
		void SetPendingWeapon( Weapon* DesiredWeapon );
		void SetCurrentWeapon( Weapon* DesiredWeapon, Weapon* PrevWeapon );
		void NextWeapon( Weapon* StartWeapon, Weapon* CandidateWeapon, Weapon* W, Bool bBreakNext );
		void PrevWeapon( Weapon* CandidateWeapon, Weapon* StartWeapon, Weapon* W );
		void SwitchToBestWeapon( Bool bForceADifferentWeapon, Weapon* BestWeapon );
		Weapon* GetBestWeapon( Bool bForceADifferentWeapon, Weapon* W, Weapon* BestWeapon, Float Rating, Float BestRating );
		Float GetWeaponRatingFor( Weapon* W, Float Rating );
		Bool IsActiveWeapon( Weapon* ThisWeapon );
		void StopFire( Byte FireModeNum );
		void StartFire( Byte FireModeNum );
		void DrawHUD( HUD* H, Inventory* Inv );
		void OwnerEvent( Name EventName, Inventory* Inv );
		Int ModifyDamage( Int Damage, Controller* InstigatedBy, Vector HitLocation, Vector Momentum, Class* DamageType );
		void DiscardInventory( Inventory* Inv, Vector TossVelocity, Bool bBelowKillZ );
		void RemoveFromInventory( Inventory* ItemToRemove, Inventory* Item, Bool bFound );
		Bool AddInventory( Inventory* NewItem, Bool bDoNotActivate, Inventory* Item, Inventory* LastItem );
		Inventory* CreateInventory( Class* NewInventoryItemClass, Bool bDoNotActivate, Inventory* Inv );
		Inventory* FindInventoryType( Class* DesiredClass, Bool bAllowSubclass, Inventory* Inv );
		Bool HandlePickupQuery( Class* ItemClass, Actor* Pickup, Inventory* Inv );
		void Destroyed();
		void SetupFor( Pawn* P );
		void DumpWeaponStats( Weapon* Weap );
		void InventoryActors( Class* BaseClass, Inventory* Inv );
		void PostBeginPlay();
	};

	class KillZDamageType: public DamageType
	{
		DECLARE_PACKAGE_CLASS( KillZDamageType, DamageType, Engine )

	public:
	};

	struct KConvexElem
	{
		Array<Vector> VertexData; //offset = 0, size = 12
		Array<Plane> PermutedVertexData; //offset = 12, size = 12
		Array<Int> FaceTriData; //offset = 24, size = 12
		Array<Vector> EdgeDirections; //offset = 36, size = 12
		Array<Vector> FaceNormalDirections; //offset = 48, size = 12
		Array<Plane> FacePlaneData; //offset = 60, size = 12
		Box ElemBox; //offset = 72, size = 28
	};

	struct KSphylElem
	{
		Matrix TM; //offset = 0, size = 64
		Float Radius; //offset = 64, size = 4
		Float Length; //offset = 68, size = 4
		Bool bNoRBCollision: 1; //offset = 72, size = 4
		Bool bPerPolyShape: 1; //offset = 72, size = 4
	};

	struct KBoxElem
	{
		Matrix TM; //offset = 0, size = 64
		Float X; //offset = 64, size = 4
		Float Y; //offset = 68, size = 4
		Float Z; //offset = 72, size = 4
		Bool bNoRBCollision: 1; //offset = 76, size = 4
		Bool bPerPolyShape: 1; //offset = 76, size = 4
	};

	struct KSphereElem
	{
		Matrix TM; //offset = 0, size = 64
		Float Radius; //offset = 64, size = 4
		Bool bNoRBCollision: 1; //offset = 68, size = 4
		Bool bPerPolyShape: 1; //offset = 68, size = 4
	};

	struct KAggregateGeom
	{
		Array<KSphereElem> SphereElems; //offset = 0, size = 12
		Array<KBoxElem> BoxElems; //offset = 12, size = 12
		Array<KSphylElem> SphylElems; //offset = 24, size = 12
		Array<KConvexElem> ConvexElems; //offset = 36, size = 12
		Pointer RenderInfo; //offset = 48, size = 4
	};

	class KMeshProps: public Object
	{
		DECLARE_PACKAGE_CLASS( KMeshProps, Object, Engine )

	public:

		Vector COMNudge; //offset = 60, size = 12
		KAggregateGeom AggGeom; //offset = 72, size = 52
	};

	class LadderReachSpec: public ReachSpec
	{
		DECLARE_PACKAGE_CLASS( LadderReachSpec, ReachSpec, Engine )

	public:
	};

	class LadderVolume: public PhysicsVolume
	{
		DECLARE_PACKAGE_CLASS( LadderVolume, PhysicsVolume, Engine )

	public:

		Rotator WallDir; //offset = 628, size = 12
		Vector LookDir; //offset = 640, size = 12
		Vector ClimbDir; //offset = 652, size = 12
		Ladder* LadderList; //offset = 664, size = 4
		Bool bNoPhysicalLadder: 1; //offset = 668, size = 4
		Bool bAutoPath: 1; //offset = 668, size = 4
		Bool bAllowLadderStrafing: 1; //offset = 668, size = 4
		Pawn* PendingClimber; //offset = 672, size = 4

		void PhysicsChangedFor( Actor* Other );
		void PawnLeavingVolume( Pawn* P, Controller* C );
		void PawnEnteredVolume( Pawn* P, Rotator PawnRot );
		Bool InUse( Pawn* Ignored, Pawn* StillClimbing );
		void PostBeginPlay( Ladder* L, Ladder* M, Vector Dir );
	};

	class Level: public LevelBase
	{
		DECLARE_PACKAGE_CLASS( Level, LevelBase, Engine )

	public:
	};

	class LevelStreaming: public Object
	{
		DECLARE_PACKAGE_CLASS( LevelStreaming, Object, Engine )

	public:

		Name PackageName; //offset = 60, size = 8
		Level* LoadedLevel; //offset = 68, size = 4
		Vector Offset; //offset = 72, size = 12
		Vector OldOffset; //offset = 84, size = 12
		Bool bIsVisible: 1; //offset = 96, size = 4
		Bool bHasCookingErrors: 1; //offset = 96, size = 4
		Bool bInPurpleLevelTest: 1; //offset = 96, size = 4
		Bool bWasLoadedBlocking: 1; //offset = 96, size = 4
		Bool bWasSlowStreaming: 1; //offset = 96, size = 4
		Bool bHasLoadRequestPending: 1; //offset = 96, size = 4
		Bool bHasUnloadRequestPending: 1; //offset = 96, size = 4
		Bool bShouldBeLoaded: 1; //offset = 96, size = 4
		Bool bShouldBeVisible: 1; //offset = 96, size = 4
		Bool bShouldBlockOnLoad: 1; //offset = 96, size = 4
		Bool bIsRequestingUnloadAndRemoval: 1; //offset = 96, size = 4
		Int Priority; //offset = 100, size = 4
		Int Tier; //offset = 104, size = 4
		Name OwningWorldName; //offset = 108, size = 8
		Name VirtualChunkName; //offset = 116, size = 8
		Bool bShouldBeVisibleInEditor: 1; //offset = 124, size = 4
		Bool bBoundingBoxVisible: 1; //offset = 124, size = 4
		Bool bLocked: 1; //offset = 124, size = 4
		Bool bIsFullyStatic: 1; //offset = 124, size = 4
		Bool bShouldTestForPurpleLevels: 1; //offset = 124, size = 4
		Color DrawColor; //offset = 128, size = 4
		Array<LevelStreamingVolume*> EditorStreamingVolumes; //offset = 132, size = 12
		Float MinTimeBetweenVolumeUnloadRequests; //offset = 144, size = 4
		Float LastVolumeUnloadRequestTime; //offset = 148, size = 4
	};

	class LevelStreamingDistance: public LevelStreaming
	{
		DECLARE_PACKAGE_CLASS( LevelStreamingDistance, LevelStreaming, Engine )

	public:

		Vector Origin; //offset = 152, size = 12
		Float MaxDistance; //offset = 164, size = 4
	};

	class LevelStreamingKismet: public LevelStreaming
	{
		DECLARE_PACKAGE_CLASS( LevelStreamingKismet, LevelStreaming, Engine )

	public:

		Bool bNeverAutoStreamOut: 1; //offset = 152, size = 4
	};

	class LevelStreamingPersistent: public LevelStreaming
	{
		DECLARE_PACKAGE_CLASS( LevelStreamingPersistent, LevelStreaming, Engine )

	public:
	};

	enum EStreamingVolumeUsage
	{
		SVB_Loading,
		SVB_LoadingAndVisibility,
		SVB_VisibilityBlockingOnLoad,
	};

	class LevelStreamingVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( LevelStreamingVolume, Volume, Engine )

	public:

		Array<LevelStreaming*> StreamingLevels; //offset = 568, size = 12
		Bool bEditorPreVisOnly: 1; //offset = 580, size = 4
		Bool bDisabled: 1; //offset = 580, size = 4
		Byte Usage; //offset = 584, size = 1

		void OnToggle( SeqAct_Toggle* Action );
	};

	class LiftCenter: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( LiftCenter, NavigationPoint, Engine )

	public:

		InterpActor* MyLift; //offset = 776, size = 4
		Float MaxDist2D; //offset = 780, size = 4
		Vector LiftOffset; //offset = 784, size = 12
		Bool bJumpLift: 1; //offset = 796, size = 4
		Float CollisionHeight; //offset = 800, size = 4
		Trigger* LiftTrigger; //offset = 804, size = 4

		Bool ProceedWithMove( Pawn* Other );
		Bool SuggestMovePreparation( Pawn* Other );
		Actor* SpecialHandling( Pawn* Other );
		void PostBeginPlay();
	};

	class LiftExit: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( LiftExit, NavigationPoint, Engine )

	public:

		LiftCenter* MyLiftCenter; //offset = 776, size = 4
		Bool bExitOnly: 1; //offset = 780, size = 4

		Bool SuggestMovePreparation( Pawn* Other, Controller* C );
		void WaitForLift( Pawn* Other );
		Bool CanBeReachedFromLiftBy( Pawn* Other );
	};

	class LightFunction: public Object
	{
		DECLARE_PACKAGE_CLASS( LightFunction, Object, Engine )

	public:

		MaterialInterface* SourceMaterial; //offset = 60, size = 4
		Vector Scale; //offset = 64, size = 12
	};

	class Surface: public Object
	{
		DECLARE_PACKAGE_CLASS( Surface, Object, Engine )

	public:

		Float GetSurfaceHeight();
		Float GetSurfaceWidth();
	};

	enum TextureGroup
	{
		TEXTUREGROUP_World,
		TEXTUREGROUP_WorldNormalMap,
		TEXTUREGROUP_LightAndShadowMap,
		TEXTUREGROUP_RenderTarget,
		TEXTUREGROUP_Character_Diff,
		TEXTUREGROUP_Character_Norm,
		TEXTUREGROUP_Character_Spec,
		unknown_5,
		unknown_5,
		unknown_5,
		unknown_5,
		unknown_5,
		unknown_5,
	};

	enum TextureAddress
	{
		TA_Wrap,
		TA_Clamp,
	};

	enum TextureFilter
	{
		TF_Nearest,
		TF_Linear,
	};

	enum EPixelFormat
	{
		PF_Unknown,
		PF_A32B32G32R32F,
		PF_A8R8G8B8,
		PF_G8,
		PF_G16,
		PF_DXT1,
		PF_DXT3,
		PF_DXT5,
		PF_UYVY,
		PF_FloatRGB,
		PF_FloatRGBA,
		PF_DepthStencil,
	};

	enum TextureCompressionSettings
	{
		TC_Default,
		TC_Normalmap,
		TC_Displacementmap,
		TC_NormalmapAlpha,
	};

	class Texture: public Surface
	{
		DECLARE_PACKAGE_CLASS( Texture, Surface, Engine )

	public:

		Bool SRGB: 1; //offset = 60, size = 4
		Bool RGBE: 1; //offset = 60, size = 4
		Bool CompressionNoAlpha: 1; //offset = 60, size = 4
		Bool CompressionNone: 1; //offset = 60, size = 4
		Bool CompressionNoMipmaps: 1; //offset = 60, size = 4
		Bool CompressionFullDynamicRange: 1; //offset = 60, size = 4
		Bool DeferCompression: 1; //offset = 60, size = 4
		Bool NeverStream: 1; //offset = 60, size = 4
		Bool bDitherMipMapAlpha: 1; //offset = 60, size = 4
		Bool bPreserveBorderR: 1; //offset = 60, size = 4
		Bool bPreserveBorderG: 1; //offset = 60, size = 4
		Bool bPreserveBorderB: 1; //offset = 60, size = 4
		Bool bPreserveBorderA: 1; //offset = 60, size = 4
		Float UnpackMin[4]; //offset = 64, size = 4
		Float UnpackMax[4]; //offset = 80, size = 4
		UntypedBulkData_Mirror SourceArt; //offset = 96, size = 52
		Bool bAsyncResourceReleaseHasBeenStarted: 1; //offset = 148, size = 4
		Byte CompressionSettings; //offset = 152, size = 1
		Byte Filter; //offset = 153, size = 1
		Byte LODGroup; //offset = 154, size = 1
		Int LODBias; //offset = 156, size = 4
		Int CachedCombinedLODBias; //offset = 160, size = 4
		String SourceFilePath; //offset = 164, size = 12
		String SourceFileTimestamp; //offset = 176, size = 12
		Pointer Resource; //offset = 188, size = 4
	};

	struct TextureLinkedListMirror
	{
		Pointer Element; //offset = 0, size = 4
		Pointer Next; //offset = 4, size = 4
		Pointer PrevLink; //offset = 8, size = 4
	};

	struct Texture2DMipMap
	{
		UntypedBulkData_Mirror Data; //offset = 0, size = 52
		Int SizeX; //offset = 52, size = 4
		Int SizeY; //offset = 56, size = 4
	};

	class Texture2D: public Texture
	{
		DECLARE_PACKAGE_CLASS( Texture2D, Texture, Engine )

	public:

		IndirectArray_Mirror Mips; //offset = 192, size = 12
		Int SizeX; //offset = 204, size = 4
		Int SizeY; //offset = 208, size = 4
		Byte Format; //offset = 212, size = 1
		Byte AddressX; //offset = 213, size = 1
		Byte AddressY; //offset = 214, size = 1
		Bool bIsStreamable: 1; //offset = 216, size = 4
		Bool bHasCancelationPending: 1; //offset = 216, size = 4
		Bool bHasBeenLoadedFromPersistentArchive: 1; //offset = 216, size = 4
		Bool bIsDiffuseTexture: 1; //offset = 216, size = 4
		Int ForceMiplevelsToBeResident; //offset = 220, size = 4
		Bool bGlobalForceMipLevelsToBeResident: 1; //offset = 224, size = 4
		Bool bConfigForceMiplevelsToBeResident: 1; //offset = 224, size = 4
		Float TimeToForceMipLevelsToBeResident; //offset = 228, size = 4
		Name TextureFileCacheName; //offset = 232, size = 8
		Guid TextureFileCacheGuid; //offset = 240, size = 16
		Guid TFCFileGuid; //offset = 256, size = 16
		Int RequestedMips; //offset = 272, size = 4
		Int ResidentMips; //offset = 276, size = 4
		ThreadSafeCounter PendingMipChangeRequestStatus; //offset = 280, size = 4
		TextureLinkedListMirror StreamableTexturesLink; //offset = 284, size = 12
		Int MipTailBaseIdx; //offset = 296, size = 4
		Pointer ResourceMem; //offset = 300, size = 4
		Int FirstResourceMemMip; //offset = 304, size = 4
		Int BioMipMapCompressionSetting; //offset = 308, size = 4
		Float CurrentScreenSize; //offset = 312, size = 4
		Float CurrentDistanceFromCameraSq; //offset = 316, size = 4
		Float CurrentScreenSizeOld; //offset = 320, size = 4
		Float CurrentDistanceFromCameraSqOld; //offset = 324, size = 4
	};

	class LightMapTexture2D: public Texture2D
	{
		DECLARE_PACKAGE_CLASS( LightMapTexture2D, Texture2D, Engine )

	public:
	};

	class LightVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( LightVolume, Volume, Engine )

	public:
	};

	class LineBatchComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( LineBatchComponent, PrimitiveComponent, Engine )

	public:

		Pointer FPrimitiveDrawInterfaceVfTable; //offset = 448, size = 4
		Pointer FPrimitiveDrawInterfaceView; //offset = 452, size = 4
		Array<Pointer> BatchedLines; //offset = 456, size = 12
		Float DefaultLifeTime; //offset = 468, size = 4
	};

	struct CurrentPostProcessVolumeInfo
	{
		PostProcessSettings LastSettings; //offset = 0, size = 144
		PostProcessVolume* LastVolumeUsed; //offset = 144, size = 4
		Float BlendStartTime; //offset = 148, size = 4
		Float LastBlendTime; //offset = 152, size = 4
	};

	struct SynchronizedActorVisibilityHistory
	{
		Pointer State; //offset = 0, size = 4
		Pointer CriticalSection; //offset = 4, size = 4
	};

	class LocalPlayer: public Player
	{
		DECLARE_PACKAGE_CLASS( LocalPlayer, Player, Engine )

	public:

		Int ControllerId; //offset = 96, size = 4
		GameViewportClient* ViewportClient; //offset = 100, size = 4
		Vector2D Origin; //offset = 104, size = 8
		Vector2D Size; //offset = 112, size = 8
		PostProcessChain* PlayerPostProcess; //offset = 120, size = 4
		Array<PostProcessChain*> PlayerPostProcessChains; //offset = 124, size = 12
		Pointer ViewState; //offset = 136, size = 4
		SynchronizedActorVisibilityHistory ActorVisibilityHistory; //offset = 140, size = 8
		Vector LastViewLocation; //offset = 148, size = 12
		CurrentPostProcessVolumeInfo CurrentPPInfo; //offset = 160, size = 156
		Bool bOverridePostProcessSettings: 1; //offset = 316, size = 4
		PostProcessSettings PostProcessSettingsOverride; //offset = 320, size = 144
		Float PPSettingsOverrideStartBlend; //offset = 464, size = 4
		Float NearClipPlane; //offset = 468, size = 4
		Bool bSentSplitJoin: 1; //offset = 472, size = 4
		Array<RequestedPostProcessEffect> RequestedPPEffects; //offset = 476, size = 12

		void TouchPlayerPostProcessChain();
		PostProcessChain* GetPostProcessChain( Int InIndex );
		Bool RemoveAllPostProcessingChains();
		Bool RemovePostProcessingChain( Int InIndex );
		Bool InsertPostProcessingChain( PostProcessChain* InChain, Int InIndex, Bool bInClone );
		void SetControllerId( Int NewControllerId, LocalPlayer* OtherPlayer, Int CurrentControllerId );
		void ClearPostProcessSettingsOverride();
		void UpdateOverridePostProcessSettings( PostProcessSettings OverrideSettings );
		void OverridePostProcessSettings( PostProcessSettings OverrideSettings, Float StartBlendTime );
		Bool GetActorVisibility( Actor* TestActor );
		void SendSplitJoin();
		Bool SpawnPlayActor( String URL, String OutError );
		void BioRecalculatePostProcessEffects();
		void BioRemovePostProcessEffect( PostProcessEffect* pEffect );
		void BioAddPostProcessEffect( PostProcessEffect* pEffect, Object* pOwner, Byte nCombineType );
	};

	class MantleMarker: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( MantleMarker, NavigationPoint, Engine )

	public:

		CoverInfo OwningSlot; //offset = 776, size = 8
	};

	class MantleReachSpec: public ForcedReachSpec
	{
		DECLARE_PACKAGE_CLASS( MantleReachSpec, ForcedReachSpec, Engine )

	public:
	};

	class MapInfo: public Object
	{
		DECLARE_PACKAGE_CLASS( MapInfo, Object, Engine )

	public:
	};

	enum EMaterialProperty
	{
		MP_EmissiveColor,
		MP_Opacity,
		MP_OpacityMask,
		MP_Distortion,
		MP_TwoSidedLightingMask,
		MP_DiffuseColor,
		MP_SpecularColor,
	};

	enum EMaterialUsage
	{
		MATUSAGE_SkeletalMesh,
		MATUSAGE_FracturedMeshes,
		MATUSAGE_ParticleSprites,
		MATUSAGE_BeamTrails,
		MATUSAGE_ParticleSubUV,
		MATUSAGE_Foliage,
		MATUSAGE_SpeedTree,
		MATUSAGE_StaticLighting,
		MATUSAGE_GammaCorrection,
	};

	class MaterialInterface: public Surface
	{
		DECLARE_PACKAGE_CLASS( MaterialInterface, Surface, Engine )

	public:

		String PreviewMesh; //offset = 60, size = 12
		Guid m_Guid; //offset = 72, size = 16

		Bool GetEffectsMaterialFractionValue( Float Value );
		Bool GetEffectsMaterialNameValue( Name EffectName );
		Bool GetVectorCurveParameterValue( Name ParameterName, InterpCurveVector OutValue );
		Bool GetVectorParameterValue( Name ParameterName, LinearColor OutValue );
		Bool GetTextureParameterValue( Name ParameterName, Texture* OutValue );
		Bool GetScalarCurveParameterValue( Name ParameterName, InterpCurveFloat OutValue );
		Bool GetScalarParameterValue( Name ParameterName, Float OutValue );
		Bool GetFontParameterValue( Name ParameterName, Font* OutFontValue, Int OutFontPage );
		PhysicalMaterial* GetPhysicalMaterial();
		Material* GetMaterial();
	};

	enum EMaterialLightingModel
	{
		MLM_Phong,
		MLM_NonDirectional,
		MLM_Unlit,
	};

	enum EBlendMode
	{
		BLEND_Opaque,
		BLEND_Masked,
		BLEND_Translucent,
		BLEND_Additive,
	};

	struct Vector2MaterialInput
	{
		Bool UseConstant: 1; //offset = 28, size = 4
		Float ConstantX; //offset = 32, size = 4
		Float ConstantY; //offset = 36, size = 4
	};

	struct VectorMaterialInput
	{
		Bool UseConstant: 1; //offset = 28, size = 4
		Vector Constant; //offset = 32, size = 12
	};

	struct ScalarMaterialInput
	{
		Bool UseConstant: 1; //offset = 28, size = 4
		Float Constant; //offset = 32, size = 4
	};

	struct ColorMaterialInput
	{
		Bool UseConstant: 1; //offset = 28, size = 4
		Color Constant; //offset = 32, size = 4
	};

	struct MaterialInput
	{
		MaterialExpression* Expression; //offset = 0, size = 4
		Int Mask; //offset = 4, size = 4
		Int MaskR; //offset = 8, size = 4
		Int MaskG; //offset = 12, size = 4
		Int MaskB; //offset = 16, size = 4
		Int MaskA; //offset = 20, size = 4
		Int GCC64_Padding; //offset = 24, size = 4
	};

	class Material: public MaterialInterface
	{
		DECLARE_PACKAGE_CLASS( Material, MaterialInterface, Engine )

	public:

		PhysicalMaterial* PhysMaterial; //offset = 88, size = 4
		Class* PhysicalMaterial; //offset = 92, size = 4
		ColorMaterialInput DiffuseColor; //offset = 96, size = 36
		ColorMaterialInput SpecularColor; //offset = 132, size = 36
		ScalarMaterialInput SpecularPower; //offset = 168, size = 36
		VectorMaterialInput Normal; //offset = 204, size = 44
		ColorMaterialInput EmissiveColor; //offset = 248, size = 36
		ScalarMaterialInput Opacity; //offset = 284, size = 36
		ScalarMaterialInput OpacityMask; //offset = 320, size = 36
		Float OpacityMaskClipValue; //offset = 356, size = 4
		Vector2MaterialInput Distortion; //offset = 360, size = 40
		Byte BlendMode; //offset = 400, size = 1
		Byte LightingModel; //offset = 401, size = 1
		ColorMaterialInput CustomLighting; //offset = 404, size = 36
		ScalarMaterialInput TwoSidedLightingMask; //offset = 440, size = 36
		ColorMaterialInput TwoSidedLightingColor; //offset = 476, size = 36
		Bool TwoSided: 1; //offset = 512, size = 4
		Bool bDisableDepthTest: 1; //offset = 512, size = 4
		Bool bUsedAsLightFunction: 1; //offset = 512, size = 4
		Bool bUsedWithFogVolumes: 1; //offset = 512, size = 4
		Bool bUsedAsSpecialEngineMaterial: 1; //offset = 512, size = 4
		Bool bUsedWithSkeletalMesh: 1; //offset = 512, size = 4
		Bool bUsedWithParticleSystem: 1; //offset = 512, size = 4
		Bool bUsedWithParticleSprites: 1; //offset = 512, size = 4
		Bool bUsedWithBeamTrails: 1; //offset = 512, size = 4
		Bool bUsedWithParticleSubUV: 1; //offset = 512, size = 4
		Bool bUsedWithFoliage: 1; //offset = 512, size = 4
		Bool bUsedWithSpeedTree: 1; //offset = 512, size = 4
		Bool bUsedWithStaticLighting: 1; //offset = 512, size = 4
		Bool bUsedWithLensFlare: 1; //offset = 512, size = 4
		Bool bUsedWithGammaCorrection: 1; //offset = 512, size = 4
		Bool bUsedWithInstancedMeshParticles: 1; //offset = 512, size = 4
		Bool bUsedWithMorphTargets: 1; //offset = 512, size = 4
		Bool bUsedWithLightEnvironments: 1; //offset = 512, size = 4
		Bool Wireframe: 1; //offset = 512, size = 4
		Bool bIsFallbackMaterial: 1; //offset = 512, size = 4
		Bool bUsesDistortion: 1; //offset = 512, size = 4
		Bool bUsesSceneColor: 1; //offset = 512, size = 4
		Bool bIsMasked: 1; //offset = 512, size = 4
		Bool AllowsEffectsMaterials: 1; //offset = 512, size = 4
		Material* FallbackMaterial; //offset = 516, size = 4
		Pointer MaterialResources[2]; //offset = 520, size = 4
		Pointer DefaultMaterialInstances[2]; //offset = 528, size = 4
		Int EditorX; //offset = 536, size = 4
		Int EditorY; //offset = 540, size = 4
		Int EditorPitch; //offset = 544, size = 4
		Int EditorYaw; //offset = 548, size = 4
		Array<MaterialExpression*> Expressions; //offset = 552, size = 12
		Array<MaterialExpressionComment*> EditorComments; //offset = 564, size = 12
		Array<MaterialExpressionCompound*> EditorCompounds; //offset = 576, size = 12
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> EditorParameters; //offset = 588, size = 20
		Bool bIsPreviewMaterial: 1; //offset = 608, size = 4
		Bool EditorRecompileAlways: 1; //offset = 608, size = 4
		Array<Texture*> ReferencedTextures; //offset = 612, size = 12
		Float MaterialDepthBias; //offset = 624, size = 4
		Float MaterialDownsampleThreshold; //offset = 628, size = 4

		Array<Texture*> GetTextures();
	};

	class MaterialEffect: public PostProcessEffect
	{
		DECLARE_PACKAGE_CLASS( MaterialEffect, PostProcessEffect, Engine )

	public:

		MaterialInterface* Material; //offset = 100, size = 4
	};

	struct ExpressionInput
	{
		MaterialExpression* Expression; //offset = 0, size = 4
		Int Mask; //offset = 4, size = 4
		Int MaskR; //offset = 8, size = 4
		Int MaskG; //offset = 12, size = 4
		Int MaskB; //offset = 16, size = 4
		Int MaskA; //offset = 20, size = 4
		Int GCC64_Padding; //offset = 24, size = 4
	};

	class MaterialExpression: public Object
	{
		DECLARE_PACKAGE_CLASS( MaterialExpression, Object, Engine )

	public:

		Int EditorX; //offset = 60, size = 4
		Int EditorY; //offset = 64, size = 4
		Bool bRealtimePreview: 1; //offset = 68, size = 4
		Bool bIsParameterExpression: 1; //offset = 68, size = 4
		MaterialExpressionCompound* Compound; //offset = 72, size = 4
		String Desc; //offset = 76, size = 12
	};

	class MaterialInstanceActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( MaterialInstanceActor, Actor, Engine )

	public:

		MaterialInstanceConstant* MatInst; //offset = 508, size = 4
	};

	class MatineeActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( MatineeActor, Actor, Engine )

	public:

		SeqAct_Interp* InterpAction; //offset = 508, size = 4
		Bool bIsPlaying: 1; //offset = 512, size = 4
		Bool bReversePlayback: 1; //offset = 512, size = 4
		Bool bPaused: 1; //offset = 512, size = 4
		Float PlayRate; //offset = 516, size = 4
		Float Position; //offset = 520, size = 4

		void Update();
	};

	class MeshComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( MeshComponent, PrimitiveComponent, Engine )

	public:

		Array<MaterialInterface*> Materials; //offset = 448, size = 12
		Array<MaterialInstanceConstant*> m_aEffectsMaterialMICs; //offset = 460, size = 12
		Array<Texture*> CachedTextures; //offset = 472, size = 12
		Float CachedTexturesTimer; //offset = 484, size = 4

		void GetUnscaledBounds( BoxSphereBounds UnscaledBounds );
		void ClearEffectsMaterial();
		Float GetFractionOfEffectEnabled();
		Name GetEffectsMaterial();
		void SetFractionOfEffectEnabled( Float fFraction );
		void SetEffectsMaterial( Name nmEffect );
		MaterialInstanceTimeVarying* CreateAndSetMaterialInstanceTimeVarying( Int ElementIndex, MaterialInstanceTimeVarying* Instance );
		MaterialInstanceConstant* CreateAndSetMaterialInstanceConstant( Int ElementIndex, MaterialInstanceConstant* Instance );
		void PrestreamTextures( Float Seconds, Bool bPrioritizeCharacterTextures );
		Int GetNumElements();
		void SetMaterial( Int ElementIndex, MaterialInterface* Material );
		MaterialInterface* GetBaseMaterial( Int ElementIndex );
		MaterialInterface* GetMaterial( Int ElementIndex );
	};

	class PrimitiveComponentFactory: public Object
	{
		DECLARE_PACKAGE_CLASS( PrimitiveComponentFactory, Object, Engine )

	public:

		Bool CollideActors: 1; //offset = 60, size = 4
		Bool BlockActors: 1; //offset = 60, size = 4
		Bool BlockZeroExtent: 1; //offset = 60, size = 4
		Bool BlockNonZeroExtent: 1; //offset = 60, size = 4
		Bool BlockRigidBody: 1; //offset = 60, size = 4
		Bool HiddenGame: 1; //offset = 60, size = 4
		Bool HiddenEditor: 1; //offset = 60, size = 4
		Bool CastShadow: 1; //offset = 60, size = 4
	};

	class MeshComponentFactory: public PrimitiveComponentFactory
	{
		DECLARE_PACKAGE_CLASS( MeshComponentFactory, PrimitiveComponentFactory, Engine )

	public:

		Array<MaterialInterface*> Materials; //offset = 64, size = 12
	};

	class Model: public Object
	{
		DECLARE_PACKAGE_CLASS( Model, Object, Engine )

	public:
	};

	class ModelComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( ModelComponent, PrimitiveComponent, Engine )

	public:

		Object* Model; //offset = 448, size = 4
		Int ZoneIndex; //offset = 452, size = 4
		Int ComponentIndex; //offset = 456, size = 4
		Array<Pointer> Nodes; //offset = 460, size = 12
		Array<Pointer> Edges; //offset = 472, size = 12
		Array<Pointer> Elements; //offset = 484, size = 12
	};

	class MotionBlurEffect: public PostProcessEffect
	{
		DECLARE_PACKAGE_CLASS( MotionBlurEffect, PostProcessEffect, Engine )

	public:

		Float MaxVelocity; //offset = 100, size = 4
		Float MotionBlurAmount; //offset = 104, size = 4
		Bool FullMotionBlur: 1; //offset = 108, size = 4
		Float CameraRotationThreshold; //offset = 112, size = 4
		Float CameraTranslationThreshold; //offset = 116, size = 4
	};

	class MultiFont: public Font
	{
		DECLARE_PACKAGE_CLASS( MultiFont, Font, Engine )

	public:

		Array<Float> ResolutionTestTable; //offset = 252, size = 12

		Int GetResolutionTestTableIndex( Float HeightTest );
	};

	struct MusicTrackParamStruct
	{
		Float FadeInTime; //offset = 0, size = 4
		Float FadeInVolumeLevel; //offset = 4, size = 4
		Float DelayBetweenOldAndNewTrack; //offset = 8, size = 4
		Float FadeOutTime; //offset = 12, size = 4
		Float FadeOutVolumeLevel; //offset = 16, size = 4
	};

	struct MusicTrackStruct
	{
		MusicTrackParamStruct Params; //offset = 0, size = 20
		Name TrackType; //offset = 20, size = 8
		SoundCue* TheSoundCue; //offset = 28, size = 4
		Bool bAutoPlay: 1; //offset = 32, size = 4
	};

	class MusicTrackDataStructures: public Object
	{
		DECLARE_PACKAGE_CLASS( MusicTrackDataStructures, Object, Engine )

	public:
	};

	class Mutator: public Info
	{
		DECLARE_PACKAGE_CLASS( Mutator, Info, Engine )

	public:

		Mutator* NextMutator; //offset = 508, size = 4
		Array<String> GroupNames; //offset = 512, size = 12
		Bool bUserAdded: 1; //offset = 524, size = 4

		void GetSeamlessTravelActorList( Bool bToEntry, Array<Actor*> ActorList );
		void InitMutator( String Options, String ErrorMessage );
		void DriverLeftVehicle( Vehicle* V, Pawn* P );
		Bool CanLeaveVehicle( Vehicle* V, Pawn* P );
		void DriverEnteredVehicle( Vehicle* V, Pawn* P );
		void NotifyLogin( Controller* NewPlayer );
		void NotifyLogout( Controller* Exiting );
		String ParseChatPercVar( Controller* Who, String Cmd );
		void GetServerPlayers( ServerResponseLine ServerState );
		void GetServerDetails( ServerResponseLine ServerState, Int I );
		Bool CheckReplacement( Actor* Other );
		Bool CheckRelevance( Actor* Other, Bool bResult );
		Bool IsRelevant( Actor* Other, Bool bResult );
		Bool AlwaysKeep( Actor* Other );
		void AddMutator( Mutator* M );
		void ModifyPlayer( Pawn* Other );
		void ModifyLogin( String Portal, String Options );
		void Mutate( String MutateString, PlayerController* Sender );
		void Destroyed();
		Bool MutatorIsAllowed();
		void PreBeginPlay();
	};

	class NetPendingLevel: public PendingLevel
	{
		DECLARE_PACKAGE_CLASS( NetPendingLevel, PendingLevel, Engine )

	public:
	};

	class Note: public Actor
	{
		DECLARE_PACKAGE_CLASS( Note, Actor, Engine )

	public:

		String Text; //offset = 508, size = 12
	};

	class Objective: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( Objective, NavigationPoint, Engine )

	public:
	};

	class ObjectReferencer: public Object
	{
		DECLARE_PACKAGE_CLASS( ObjectReferencer, Object, Engine )

	public:

		Array<Object*> ReferencedObjects; //offset = 60, size = 12
	};

	enum EPropertyValueMappingType
	{
		PVMT_RawValue,
		PVMT_PredefinedValues,
		PVMT_Ranged,
	};

	enum ESettingsDataType
	{
		SDT_Empty,
		SDT_Int32,
		SDT_Int64,
		SDT_Double,
		SDT_String,
	};

	enum EOnlineDataAdvertisementType
	{
		ODAT_DontAdvertise,
		ODAT_OnlineService,
	};

	struct IdToStringMapping
	{
		Int Id; //offset = 0, size = 4
		Name Name; //offset = 4, size = 8
	};

	struct SettingsPropertyPropertyMetaData
	{
		Int Id; //offset = 0, size = 4
		Name Name; //offset = 4, size = 8
		String ColumnHeaderText; //offset = 12, size = 12
		Byte MappingType; //offset = 24, size = 1
		Array<IdToStringMapping> ValueMappings; //offset = 28, size = 12
		Array<SettingsData> PredefinedValues; //offset = 40, size = 12
		Float MinVal; //offset = 52, size = 4
		Float MaxVal; //offset = 56, size = 4
		Float RangeIncrement; //offset = 60, size = 4
	};

	struct StringIdToStringMapping
	{
		Int Id; //offset = 0, size = 4
		Name Name; //offset = 4, size = 8
		Bool bIsWildcard: 1; //offset = 12, size = 4
	};

	struct LocalizedStringSettingMetaData
	{
		Int Id; //offset = 0, size = 4
		Name Name; //offset = 4, size = 8
		String ColumnHeaderText; //offset = 12, size = 12
		Array<StringIdToStringMapping> ValueMappings; //offset = 24, size = 12
	};

	struct SettingsData
	{
		Byte Type; //offset = 0, size = 1
		Int Value1; //offset = 4, size = 4
		Pointer Value2; //offset = 8, size = 4
	};

	struct SettingsProperty
	{
		Int PropertyId; //offset = 0, size = 4
		SettingsData Data; //offset = 4, size = 12
		Byte AdvertisementType; //offset = 16, size = 1
	};

	struct LocalizedStringSetting
	{
		Int Id; //offset = 0, size = 4
		Int ValueIndex; //offset = 4, size = 4
		Byte AdvertisementType; //offset = 8, size = 1
	};

	class Settings: public Object
	{
		DECLARE_PACKAGE_CLASS( Settings, Object, Engine )

	public:

		Array<LocalizedStringSetting> LocalizedSettings; //offset = 60, size = 12
		Array<SettingsProperty> Properties; //offset = 72, size = 12
		Array<LocalizedStringSettingMetaData> LocalizedSettingsMappings; //offset = 84, size = 12
		Array<SettingsPropertyPropertyMetaData> PropertyMappings; //offset = 96, size = 12

		void UpdateFromURL( String URL, GameInfo* Game );
		void BuildURL( String URL );
		void AppendContextsToURL( String URL );
		void AppendPropertiesToURL( String URL );
		void AppendDataBindingsToURL( String URL );
		void GetQoSAdvertisedStringSettings( Array<LocalizedStringSetting> QoSSettings );
		void GetQoSAdvertisedProperties( Array<SettingsProperty> QoSProps );
		Bool GetRangedPropertyValue( Int PropertyId, Float OutValue );
		Bool SetRangedPropertyValue( Int PropertyId, Float NewValue );
		Bool GetPropertyRange( Int PropertyId, Float OutMinValue, Float OutMaxValue, Float RangeIncrement, Byte bFormatAsInt );
		Bool GetPropertyMappingType( Int PropertyId, Byte OutType );
		Bool HasStringSetting( Int SettingId );
		Bool HasProperty( Int PropertyId );
		void UpdateProperties( Array<SettingsProperty> Props, Bool bShouldAddIfMissing );
		void UpdateStringSettings( Array<LocalizedStringSetting> Settings, Bool bShouldAddIfMissing );
		Byte GetPropertyType( Int PropertyId );
		Bool GetStringProperty( Int PropertyId, String Value );
		void SetStringProperty( Int PropertyId, String Value );
		Bool GetIntProperty( Int PropertyId, Int Value );
		void SetIntProperty( Int PropertyId, Int Value );
		Bool GetFloatProperty( Int PropertyId, Float Value );
		void SetFloatProperty( Int PropertyId, Float Value );
		Bool SetPropertyFromStringByName( Name PropertyName, String NewValue );
		String GetPropertyAsStringByName( Name PropertyName );
		String GetPropertyAsString( Int PropertyId );
		String GetPropertyColumnHeader( Int PropertyId );
		Name GetPropertyName( Int PropertyId );
		Bool GetPropertyId( Name PropertyName, Int PropertyId );
		Bool SetStringSettingValueFromStringByName( Name StringSettingName, String NewValue );
		Name GetStringSettingValueNameByName( Name StringSettingName );
		Name GetStringSettingValueName( Int StringSettingId, Int ValueIndex );
		Bool IsWildcardStringSetting( Int StringSettingId );
		String GetStringSettingColumnHeader( Int StringSettingId );
		Name GetStringSettingName( Int StringSettingId );
		Bool GetStringSettingId( Name StringSettingName, Int StringSettingId );
		Bool GetStringSettingValueByName( Name StringSettingName, Int ValueIndex );
		void SetStringSettingValueByName( Name StringSettingName, Int ValueIndex, Bool bShouldAutoAdd );
		Bool GetStringSettingValueNames( Int StringSettingId, Array<IdToStringMapping> Values );
		Bool GetStringSettingValue( Int StringSettingId, Int ValueIndex );
		void SetStringSettingValue( Int StringSettingId, Int ValueIndex, Bool bShouldAutoAdd );
		void GetSettingsDataDateTime( SettingsData Data, Int OutInt1, Int OutInt2 );
		void GetSettingsDataBlob( SettingsData Data, Array<Byte> OutBlob );
		Int GetSettingsDataInt( SettingsData Data );
		Float GetSettingsDataFloat( SettingsData Data );
		String GetSettingsDataString( SettingsData Data );
		void EmptySettingsData( SettingsData Data );
		void SetSettingsData( SettingsData Data, SettingsData Data2Copy );
		void SetSettingsDataBlob( SettingsData Data, Array<Byte> InBlob );
		void SetSettingsDataDateTime( SettingsData Data, Int InInt1, Int InInt2 );
		void SetSettingsDataInt( SettingsData Data, Int InInt );
		void SetSettingsDataFloat( SettingsData Data, Float InFloat );
		void SetSettingsDataString( SettingsData Data, String InString );
	};

	enum EDedicatedServerType
	{
		DST_Standard,
		DST_Premium1,
	};

	class OnlineGameSettings: public Settings
	{
		DECLARE_PACKAGE_CLASS( OnlineGameSettings, Settings, Engine )

	public:

		Int NumPublicConnections; //offset = 108, size = 4
		Int NumPrivateConnections; //offset = 112, size = 4
		Int NumOpenPublicConnections; //offset = 116, size = 4
		Int NumOpenPrivateConnections; //offset = 120, size = 4
		Byte ServerNonce[8]; //offset = 124, size = 1
		Byte DedicatedServerType; //offset = 132, size = 1
		Int MaxSearchResults; //offset = 136, size = 4
		Bool bShouldAdvertise: 1; //offset = 140, size = 4
		Bool bIsLanMatch: 1; //offset = 140, size = 4
		Bool bUsesStats: 1; //offset = 140, size = 4
		Bool bAllowJoinInProgress: 1; //offset = 140, size = 4
		Bool bAllowInvites: 1; //offset = 140, size = 4
		Bool bUsesPresence: 1; //offset = 140, size = 4
		Bool bAllowJoinViaPresence: 1; //offset = 140, size = 4
		Bool bUsesArbitration: 1; //offset = 140, size = 4
		Bool bWasFromInvite: 1; //offset = 140, size = 4
		Bool bIsDedicated: 1; //offset = 140, size = 4
		Bool bIsListPlay: 1; //offset = 140, size = 4
		String OwningPlayerName; //offset = 144, size = 12
		UniqueNetId OwningPlayerId; //offset = 156, size = 8
		Int PingInMs; //offset = 164, size = 4
		Float AverageSkillRating; //offset = 168, size = 4
	};

	enum EOnlineGameSearchSortType
	{
		OGSSO_Ascending,
		OGSSO_Descending,
	};

	enum EOnlineGameSearchComparisonType
	{
		OGSCT_Equals,
		OGSCT_NotEquals,
		OGSCT_GreaterThan,
		OGSCT_GreaterThanEquals,
	};

	enum EOnlineGameSearchEntryType
	{
		OGSET_Property,
		OGSET_LocalizedSetting,
	};

	struct OnlineGameSearchParameter
	{
		Int EntryId; //offset = 0, size = 4
		Byte EntryType; //offset = 4, size = 1
		Byte ComparisonType; //offset = 5, size = 1
	};

	struct OnlineGameSearchORClause
	{
		Array<OnlineGameSearchParameter> OrParams; //offset = 0, size = 12
	};

	struct OnlineGameSearchSortClause
	{
		Int EntryId; //offset = 0, size = 4
		Byte EntryType; //offset = 4, size = 1
		Byte SortType; //offset = 5, size = 1
	};

	struct OnlineGameSearchQuery
	{
		Array<OnlineGameSearchORClause> OrClauses; //offset = 0, size = 12
		Array<OnlineGameSearchSortClause> SortClauses; //offset = 12, size = 12
	};

	struct OnlineGameSearchResult
	{
		OnlineGameSettings* GameSettings; //offset = 0, size = 4
		Pointer PlatformData; //offset = 4, size = 4
	};

	class OnlineGameSearch: public Settings
	{
		DECLARE_PACKAGE_CLASS( OnlineGameSearch, Settings, Engine )

	public:

		Int MaxSearchResults; //offset = 108, size = 4
		LocalizedStringSetting Query; //offset = 112, size = 12
		Bool bIsLanQuery: 1; //offset = 124, size = 4
		Bool bUsesArbitration: 1; //offset = 124, size = 4
		Bool bIsSearchInProgress: 1; //offset = 124, size = 4
		Bool bIsListenServerSearchInProgress: 1; //offset = 124, size = 4
		Bool bIsDedicatedServerSearchInProgress: 1; //offset = 124, size = 4
		Bool bIsListPlaySearchInProgress: 1; //offset = 124, size = 4
		Bool bShouldIncludeDedicatedServers: 1; //offset = 124, size = 4
		Bool bShouldIncludeListenServers: 1; //offset = 124, size = 4
		Bool bShouldIncludeListPlayServers: 1; //offset = 124, size = 4
		Int NumListPlayServersAvailable; //offset = 128, size = 4
		Class* GameSettingsClass; //offset = 132, size = 4
		Array<OnlineGameSearchResult> Results; //offset = 136, size = 12
		OnlineGameSearchQuery FilterQuery; //offset = 148, size = 24
	};

	enum EProfileVoiceThruSpeakersOptions
	{
		PVTSO_Off,
		PVTSO_On,
	};

	enum EProfileControllerVibrationToggleOptions
	{
		PCVTO_Off,
		PCVTO_IgnoreThis,
		PCVTO_IgnoreThis2,
	};

	enum EProfileXInversionOptions
	{
		PXIO_Off,
		PXIO_On,
	};

	enum EProfileYInversionOptions
	{
		PYIO_Off,
		PYIO_On,
	};

	enum EProfileRaceAcceleratorControlOptions
	{
		PRACO_Trigger,
		PRACO_Button,
	};

	enum EProfileRaceBrakeControlOptions
	{
		PRBCO_Trigger,
		PRBCO_Button,
	};

	enum EProfileRaceCameraLocationOptions
	{
		PRCLO_Behind,
		PRCLO_Front,
	};

	enum EProfileRaceTransmissionOptions
	{
		PRTO_Auto,
		PRTO_Manual,
	};

	enum EProfileMovementControlOptions
	{
		PMCO_L_Thumbstick,
		PMCO_R_Thumbstick,
	};

	enum EProfileAutoCenterOptions
	{
		PACO_Off,
		PACO_On,
	};

	enum EProfileAutoAimOptions
	{
		PAAO_Off,
		PAAO_On,
	};

	enum EProfilePreferredColorOptions
	{
		PPCO_None,
		PPCO_Black,
		PPCO_White,
		PPCO_Yellow,
		PPCO_Orange,
		PPCO_Pink,
		PPCO_Red,
	};

	enum EProfileControllerSensitivityOptions
	{
		PCSO_Medium,
		PCSO_Low,
	};

	enum EProfileDifficultyOptions
	{
		PDO_Normal,
		PDO_Easy,
	};

	enum EOnlineProfileAsyncState
	{
		OPAS_None,
		OPAS_Read,
	};

	enum EProfileSettingID
	{
		PSI_Unknown,
		PSI_ControllerVibration,
		PSI_YInversion,
		PSI_GamerCred,
		PSI_GamerRep,
		PSI_VoiceMuted,
		PSI_VoiceThruSpeakers,
		PSI_VoiceVolume,
		PSI_GamerPictureKey,
		PSI_GamerMotto,
		PSI_GamerTitlesPlayed,
		PSI_GamerAchievementsEarned,
		PSI_GameDifficulty,
		PSI_ControllerSensitivity,
		PSI_PreferredColor1,
	};

	enum EOnlineProfilePropertyOwner
	{
		OPPO_None,
		OPPO_OnlineService,
	};

	struct OnlineProfileSetting
	{
		Byte Owner; //offset = 0, size = 1
		SettingsProperty ProfileSetting; //offset = 4, size = 20
	};

	class OnlineProfileSettings: public Object
	{
		DECLARE_PACKAGE_CLASS( OnlineProfileSettings, Object, Engine )

	public:

		Int VersionNumber; //offset = 60, size = 4
		Array<Int> ProfileSettingIds; //offset = 64, size = 12
		Array<OnlineProfileSetting> ProfileSettings; //offset = 76, size = 12
		Array<OnlineProfileSetting> DefaultSettings; //offset = 88, size = 12
		Array<IdToStringMapping> OwnerMappings; //offset = 100, size = 12
		Array<SettingsPropertyPropertyMetaData> ProfileMappings; //offset = 112, size = 12
		Byte AsyncState; //offset = 124, size = 1

		Bool GetRangedProfileSettingValue( Int ProfileId, Float OutValue );
		Bool SetRangedProfileSettingValue( Int ProfileId, Float NewValue );
		Bool GetProfileSettingRange( Int ProfileId, Float OutMinValue, Float OutMaxValue, Float RangeIncrement, Byte bFormatAsInt );
		Bool GetProfileSettingMappingType( Int ProfileId, Byte OutType );
		void SetDefaultVersionNumber();
		Int GetVersionNumber();
		void AppendVersionToSettings();
		void AppendVersionToReadIds();
		void ScriptSetToDefaults();
		void SetToDefaults();
		Bool SetProfileSettingValueFloat( Int ProfileSettingId, Float Value );
		Bool SetProfileSettingValueInt( Int ProfileSettingId, Int Value );
		Bool SetProfileSettingValueId( Int ProfileSettingId, Int Value );
		Bool GetProfileSettingValueFloat( Int ProfileSettingId, Float Value );
		Bool GetProfileSettingValueInt( Int ProfileSettingId, Int Value );
		Bool GetProfileSettingValueId( Int ProfileSettingId, Int ValueId );
		Bool SetProfileSettingValue( Int ProfileSettingId, String NewValue );
		Bool SetProfileSettingValueByName( Name ProfileSettingName, String NewValue );
		Bool GetProfileSettingValueByName( Name ProfileSettingName, String Value );
		Bool GetProfileSettingValues( Int ProfileSettingId, Array<Name> Values );
		Name GetProfileSettingValueName( Int ProfileSettingId );
		Bool GetProfileSettingValue( Int ProfileSettingId, String Value );
		Bool IsProfileSettingIdMapped( Int ProfileSettingId );
		String GetProfileSettingColumnHeader( Int ProfileSettingId );
		Name GetProfileSettingName( Int ProfileSettingId );
		Bool GetProfileSettingId( Name ProfileSettingName, Int ProfileSettingId );
	};

	class OnlineStats: public Object
	{
		DECLARE_PACKAGE_CLASS( OnlineStats, Object, Engine )

	public:

		Array<StringIdToStringMapping> ViewIdMappings; //offset = 60, size = 12

		Name GetViewName( Int ViewId );
		Bool GetViewId( Name ViewName, Int ViewId );
	};

	struct ColumnMetaData
	{
		Int Id; //offset = 0, size = 4
		Name Name; //offset = 4, size = 8
		String ColumnName; //offset = 12, size = 12
	};

	struct OnlineStatsColumn
	{
		Int ColumnNo; //offset = 0, size = 4
		SettingsData StatValue; //offset = 4, size = 12
	};

	struct OnlineStatsRow
	{
		UniqueNetId PlayerID; //offset = 0, size = 8
		SettingsData Rank; //offset = 8, size = 12
		String NickName; //offset = 20, size = 12
		Array<OnlineStatsColumn> Columns; //offset = 32, size = 12
	};

	class OnlineStatsRead: public OnlineStats
	{
		DECLARE_PACKAGE_CLASS( OnlineStatsRead, OnlineStats, Engine )

	public:

		Int ViewId; //offset = 72, size = 4
		Int SortColumnId; //offset = 76, size = 4
		Array<Int> ColumnIds; //offset = 80, size = 12
		Int TotalRowsInView; //offset = 92, size = 4
		Array<OnlineStatsRow> Rows; //offset = 96, size = 12
		Array<ColumnMetaData> ColumnMappings; //offset = 108, size = 12
		String ViewName; //offset = 120, size = 12
		__OnStatsReadComplete__Delegate __OnStatsReadComplete__Delegate; //offset = 132, size = 12

		void OnStatsReadComplete();
	};

	class OnlineStatsWrite: public OnlineStats
	{
		DECLARE_PACKAGE_CLASS( OnlineStatsWrite, OnlineStats, Engine )

	public:

		Array<StringIdToStringMapping> StatMappings; //offset = 72, size = 12
		Array<SettingsProperty> Properties; //offset = 84, size = 12
		Array<Int> ViewIds; //offset = 96, size = 12
		Array<Int> ArbitratedViewIds; //offset = 108, size = 12
		Int RatingId; //offset = 120, size = 4
		__OnStatsWriteComplete__Delegate __OnStatsWriteComplete__Delegate; //offset = 124, size = 12

		void DecrementIntStat( Int StatId, Int DecBy );
		void DecrementFloatStat( Int StatId, Float DecBy );
		void IncrementIntStat( Int StatId, Int IncBy );
		void IncrementFloatStat( Int StatId, Float IncBy );
		void SetIntStat( Int StatId, Int Value );
		void SetFloatStat( Int StatId, Float Value );
		Name GetStatName( Int StatId );
		Bool GetStatId( Name StatName, Int StatId );
		void OnStatsWriteComplete();
	};

	enum EOnlineAccountCreateStatus
	{
		OACS_CreateSuccessful,
		OACS_UnknownError,
		OACS_InvalidUserName,
		OACS_InvalidPassword,
	};

	enum ELanBeaconState
	{
		LANB_NotUsingLanBeacon,
		LANB_Hosting,
	};

	enum ENATType
	{
		NAT_Unknown,
		NAT_Open,
		NAT_Moderate,
	};

	enum EOnlineServerConnectionStatus
	{
		OSCS_NotConnected,
		OSCS_Connected,
		OSCS_ConnectionDropped,
		OSCS_NoNetworkConnection,
		OSCS_ServiceUnavailable,
	};

	enum EOnlineEnumerationReadState
	{
		OERS_NotStarted,
		OERS_InProgress,
		OERS_Done,
	};

	enum EOnlineGameState
	{
		OGS_NoSession,
		OGS_Pending,
		OGS_InProgress,
	};

	enum ENetworkNotificationPosition
	{
		NNP_TopLeft,
		NNP_TopCenter,
		NNP_TopRight,
		NNP_CenterLeft,
		NNP_Center,
	};

	enum EFeaturePrivilegeLevel
	{
		FPL_Disabled,
		FPL_EnabledFriendsOnly,
	};

	enum ELoginStatus
	{
		LS_NotLoggedIn,
		LS_UsingLocalProfile,
	};

	struct AchievementDetails
	{
		Int Id; //offset = 0, size = 4
		String AchievementName; //offset = 4, size = 12
		String Description; //offset = 16, size = 12
		String HowTo; //offset = 28, size = 12
		Texture2D* Image; //offset = 40, size = 4
		Int GamerPoints; //offset = 44, size = 4
		Bool bIsSecret: 1; //offset = 48, size = 4
		Bool bWasAchievedOnline: 1; //offset = 48, size = 4
		Bool bWasAchievedOffline: 1; //offset = 48, size = 4
	};

	struct OnlineFriendMessage
	{
		UniqueNetId SendingPlayerId; //offset = 0, size = 8
		String SendingPlayerNick; //offset = 8, size = 12
		Bool bIsFriendInvite: 1; //offset = 20, size = 4
		Bool bIsGameInvite: 1; //offset = 20, size = 4
		Bool bWasAccepted: 1; //offset = 20, size = 4
		Bool bWasDenied: 1; //offset = 20, size = 4
		String Message; //offset = 24, size = 12
	};

	struct RemoteTalker
	{
		UniqueNetId TalkerId; //offset = 0, size = 8
		Bool bWasTalking: 1; //offset = 8, size = 4
	};

	struct LocalTalker
	{
		Bool bHasVoice: 1; //offset = 0, size = 4
		Bool bHasNetworkedVoice: 1; //offset = 0, size = 4
		Bool bIsRecognizingSpeech: 1; //offset = 0, size = 4
		Bool bWasTalking: 1; //offset = 0, size = 4
	};

	struct OnlinePlayerScore
	{
		UniqueNetId PlayerID; //offset = 0, size = 8
		Int TeamID; //offset = 8, size = 4
		Int Score; //offset = 12, size = 4
	};

	struct SpeechRecognizedWord
	{
		Int WordId; //offset = 0, size = 4
		String WordText; //offset = 4, size = 12
		Float Confidence; //offset = 16, size = 4
	};

	struct OnlineArbitrationRegistrant
	{
		QWord MachineId; //offset = 0, size = 8
		UniqueNetId PlayerID; //offset = 8, size = 8
		Int Trustworthiness; //offset = 16, size = 4
	};

	struct OnlineContent
	{
		Int UserIndex; //offset = 0, size = 4
		String FriendlyName; //offset = 4, size = 12
		String ContentPath; //offset = 16, size = 12
		Array<String> ContentPackages; //offset = 28, size = 12
		Array<String> ContentFiles; //offset = 40, size = 12
	};

	struct UniqueNetId
	{
		Byte Uid[8]; //offset = 0, size = 1
	};

	struct OnlineFriend
	{
		UniqueNetId UniqueId; //offset = 0, size = 8
		String NickName; //offset = 8, size = 12
		String PresenceInfo; //offset = 20, size = 12
		Bool bIsOnline: 1; //offset = 32, size = 4
		Bool bIsPlaying: 1; //offset = 32, size = 4
		Bool bIsPlayingThisGame: 1; //offset = 32, size = 4
		Bool bIsJoinable: 1; //offset = 32, size = 4
		Bool bHasVoiceSupport: 1; //offset = 32, size = 4
	};

	struct FriendsQuery
	{
		UniqueNetId UniqueId; //offset = 0, size = 8
		Bool bIsFriend: 1; //offset = 8, size = 4
	};

	class OnlineSubsystem: public Object
	{
		DECLARE_PACKAGE_CLASS( OnlineSubsystem, Object, Engine )

	public:

		Pointer VfTable_FTickableObject; //offset = 60, size = 4
		AccountInterface AccountInterface; //offset = 64, size = 8
		PlayerInterface PlayerInterface; //offset = 72, size = 8
		PlayerInterfaceEx PlayerInterfaceEx; //offset = 80, size = 8
		SystemInterface SystemInterface; //offset = 88, size = 8
		GameInterface GameInterface; //offset = 96, size = 8
		ContentInterface ContentInterface; //offset = 104, size = 8
		VoiceInterface VoiceInterface; //offset = 112, size = 8
		StatsInterface StatsInterface; //offset = 120, size = 8
		NewsInterface NewsInterface; //offset = 128, size = 8

		Bool SetNewsInterface( Object* NewInterface );
		Bool SetStatsInterface( Object* NewInterface );
		Bool SetVoiceInterface( Object* NewInterface );
		Bool SetContentInterface( Object* NewInterface );
		Bool SetGameInterface( Object* NewInterface );
		Bool SetSystemInterface( Object* NewInterface );
		Bool SetPlayerInterfaceEx( Object* NewInterface );
		Bool SetPlayerInterface( Object* NewInterface );
		Bool SetAccountInterface( Object* NewInterface );
		Bool Init();
	};

	class PackageMapLevel: public PackageMap
	{
		DECLARE_PACKAGE_CLASS( PackageMapLevel, PackageMap, Engine )

	public:
	};

	class PackageMapSeekFree: public PackageMapLevel
	{
		DECLARE_PACKAGE_CLASS( PackageMapSeekFree, PackageMapLevel, Engine )

	public:
	};

	class PathBlockingVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( PathBlockingVolume, Volume, Engine )

	public:
	};

	class PathNode: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( PathNode, NavigationPoint, Engine )

	public:
	};

	enum EPathSearchType
	{
		PST_Default,
		PST_Breadth,
		PST_NewBestPathTo,
	};


	class Pawn: public Actor
	{
		DECLARE_PACKAGE_CLASS( Pawn, Actor, Engine )

	public:
		struct Dying
		{
			/*
			BeginState
			TakeDamage
			Timer
			OutsideWorldBounds
			Died
			Landed
			BaseChange
			PlayNextAnimation
			PlayWeaponSwitch
			FellOutOfWorld
			BreathTimer
			*/
		};

		Float MaxStepHeight; //offset = 508, size = 4
		Float MaxJumpHeight; //offset = 512, size = 4
		Float WalkableFloorZ; //offset = 516, size = 4
		Controller* Controller; //offset = 520, size = 4
		Pawn* NextPawn; //offset = 524, size = 4
		Float NetRelevancyTime; //offset = 528, size = 4
		PlayerController* LastRealViewer; //offset = 532, size = 4
		Actor* LastViewer; //offset = 536, size = 4
		Bool bUpAndOut: 1; //offset = 540, size = 4
		Bool bIsWalking: 1; //offset = 540, size = 4
		Bool bWantsToCrouch: 1; //offset = 540, size = 4
		Bool bIsCrouched: 1; //offset = 540, size = 4
		Bool bTryToUncrouch: 1; //offset = 540, size = 4
		Bool bCanCrouch: 1; //offset = 540, size = 4
		Bool bCrawler: 1; //offset = 540, size = 4
		Bool bReducedSpeed: 1; //offset = 540, size = 4
		Bool bJumpCapable: 1; //offset = 540, size = 4
		Bool bCanJump: 1; //offset = 540, size = 4
		Bool bCanWalk: 1; //offset = 540, size = 4
		Bool bCanSwim: 1; //offset = 540, size = 4
		Bool bCanFly: 1; //offset = 540, size = 4
		Bool bCanClimbLadders: 1; //offset = 540, size = 4
		Bool bCanStrafe: 1; //offset = 540, size = 4
		Bool bAvoidLedges: 1; //offset = 540, size = 4
		Bool bStopAtLedges: 1; //offset = 540, size = 4
		Bool bSimulateGravity: 1; //offset = 540, size = 4
		Bool bIgnoreForces: 1; //offset = 540, size = 4
		Bool bCanWalkOffLedges: 1; //offset = 540, size = 4
		Bool bCanBeBaseForPawns: 1; //offset = 540, size = 4
		Bool bSimGravityDisabled: 1; //offset = 540, size = 4
		Bool bDirectHitWall: 1; //offset = 540, size = 4
		Bool bPushesRigidBodies: 1; //offset = 540, size = 4
		Bool bForceFloorCheck: 1; //offset = 540, size = 4
		Bool bForceKeepAnchor: 1; //offset = 540, size = 4
		Bool bCanMantle: 1; //offset = 540, size = 4
		Bool bCanClimbCeilings: 1; //offset = 540, size = 4
		Bool bCanSwatTurn: 1; //offset = 540, size = 4
		Bool bCanLeap: 1; //offset = 540, size = 4
		Bool bCanCoverSlip: 1; //offset = 540, size = 4
		Bool bDisplayPathErrors: 1; //offset = 540, size = 4
		Bool bIsFemale: 1; //offset = 544, size = 4
		Bool bCanPickupInventory: 1; //offset = 544, size = 4
		Bool bAmbientCreature: 1; //offset = 544, size = 4
		Bool bLOSHearing: 1; //offset = 544, size = 4
		Bool bMuffledHearing: 1; //offset = 544, size = 4
		Bool bDontPossess: 1; //offset = 544, size = 4
		Bool bAutoFire: 1; //offset = 544, size = 4
		Bool bRollToDesired: 1; //offset = 544, size = 4
		Bool bStationary: 1; //offset = 544, size = 4
		Bool bCachedRelevant: 1; //offset = 544, size = 4
		Bool bSpecialHUD: 1; //offset = 544, size = 4
		Bool bNoWeaponFiring: 1; //offset = 544, size = 4
		Bool bCanUse: 1; //offset = 544, size = 4
		Bool bModifyReachSpecCost: 1; //offset = 544, size = 4
		Bool bPathfindsAsVehicle: 1; //offset = 544, size = 4
		Bool bRunPhysicsWithNoController: 1; //offset = 544, size = 4
		Bool bForceMaxAccel: 1; //offset = 544, size = 4
		Bool bForceRMVelocity: 1; //offset = 544, size = 4
		Bool bForceRegularVelocity: 1; //offset = 544, size = 4
		Bool bPlayedDeath: 1; //offset = 544, size = 4
		Bool m_bSuppressPhysicsRoll: 1; //offset = 544, size = 4
		Bool m_bSuppressPhysicsPitch: 1; //offset = 544, size = 4
		Bool m_bEnableRagdollRecovery: 1; //offset = 544, size = 4
		Bool m_bIsWallSliding: 1; //offset = 544, size = 4
		Float UncrouchTime; //offset = 548, size = 4
		Float CrouchHeight; //offset = 552, size = 4
		Float CrouchRadius; //offset = 556, size = 4
		Int FullHeight; //offset = 560, size = 4
		Float NonPreferredVehiclePathMultiplier; //offset = 564, size = 4
		Byte PathSearchType; //offset = 568, size = 1
		Byte RemoteViewPitch; //offset = 569, size = 1
		Byte FlashCount; //offset = 570, size = 1
		Byte FiringMode; //offset = 571, size = 1
		PathConstraint* PathConstraintList; //offset = 572, size = 4
		PathGoalEvaluator* PathGoalList; //offset = 576, size = 4
		Float DesiredSpeed; //offset = 580, size = 4
		Float MaxDesiredSpeed; //offset = 584, size = 4
		Float HearingThreshold; //offset = 588, size = 4
		Float Alertness; //offset = 592, size = 4
		Float SightRadius; //offset = 596, size = 4
		Float PeripheralVision; //offset = 600, size = 4
		Float AvgPhysicsTime; //offset = 604, size = 4
		Float Mass; //offset = 608, size = 4
		Float Buoyancy; //offset = 612, size = 4
		Float MeleeRange; //offset = 616, size = 4
		NavigationPoint* Anchor; //offset = 620, size = 4
		NavigationPoint* LastAnchor; //offset = 624, size = 4
		Float FindAnchorFailedTime; //offset = 628, size = 4
		Float LastValidAnchorTime; //offset = 632, size = 4
		Float DestinationOffset; //offset = 636, size = 4
		Float NextPathRadius; //offset = 640, size = 4
		Vector SerpentineDir; //offset = 644, size = 12
		Float SerpentineDist; //offset = 656, size = 4
		Float SerpentineTime; //offset = 660, size = 4
		Float SpawnTime; //offset = 664, size = 4
		Int MaxPitchLimit; //offset = 668, size = 4
		Float GroundSpeed; //offset = 672, size = 4
		Float WaterSpeed; //offset = 676, size = 4
		Float AirSpeed; //offset = 680, size = 4
		Float LadderSpeed; //offset = 684, size = 4
		Float AccelRate; //offset = 688, size = 4
		Float JumpZ; //offset = 692, size = 4
		Float OutofWaterZ; //offset = 696, size = 4
		Float MaxOutOfWaterStepHeight; //offset = 700, size = 4
		Float AirControl; //offset = 704, size = 4
		Float WalkingPct; //offset = 708, size = 4
		Float CrouchedPct; //offset = 712, size = 4
		Float MaxFallSpeed; //offset = 716, size = 4
		Float AIMaxFallSpeedFactor; //offset = 720, size = 4
		Float BaseEyeHeight; //offset = 724, size = 4
		Float EyeHeight; //offset = 728, size = 4
		Vector Floor; //offset = 732, size = 12
		Float SplashTime; //offset = 744, size = 4
		Float OldZ; //offset = 748, size = 4
		PhysicsVolume* HeadVolume; //offset = 752, size = 4
		Int Health; //offset = 756, size = 4
		Int HealthMax; //offset = 760, size = 4
		Float BreathTime; //offset = 764, size = 4
		Float UnderWaterTime; //offset = 768, size = 4
		Float LastPainTime; //offset = 772, size = 4
		Vector RMVelocity; //offset = 776, size = 12
		Vector noise1spot; //offset = 788, size = 12
		Float noise1time; //offset = 800, size = 4
		Pawn* noise1other; //offset = 804, size = 4
		Float noise1loudness; //offset = 808, size = 4
		Vector noise2spot; //offset = 812, size = 12
		Float noise2time; //offset = 824, size = 4
		Pawn* noise2other; //offset = 828, size = 4
		Float noise2loudness; //offset = 832, size = 4
		Float SoundDampening; //offset = 836, size = 4
		Float DamageScaling; //offset = 840, size = 4
		String MenuName; //offset = 844, size = 12
		Class* ControllerClass; //offset = 856, size = 4
		PlayerReplicationInfo* PlayerReplicationInfo; //offset = 860, size = 4
		LadderVolume* OnLadder; //offset = 864, size = 4
		Name LandMovementState; //offset = 868, size = 8
		Name WaterMovementState; //offset = 876, size = 8
		PlayerStart* LastStartSpot; //offset = 884, size = 4
		Float LastStartTime; //offset = 888, size = 4
		Vector TakeHitLocation; //offset = 892, size = 12
		Class* HitDamageType; //offset = 904, size = 4
		Vector TearOffMomentum; //offset = 908, size = 12
		SkeletalMeshComponent* Mesh; //offset = 920, size = 4
		CylinderComponent* CylinderComponent; //offset = 924, size = 4
		Float RBPushRadius; //offset = 928, size = 4
		Float RBPushStrength; //offset = 932, size = 4
		Vehicle* DrivenVehicle; //offset = 936, size = 4
		Float AlwaysRelevantDistanceSquared; //offset = 940, size = 4
		Float VehicleCheckRadius; //offset = 944, size = 4
		Controller* LastHitBy; //offset = 948, size = 4
		Float ViewPitchMin; //offset = 952, size = 4
		Float ViewPitchMax; //offset = 956, size = 4
		Int AllowedYawError; //offset = 960, size = 4
		Class* InventoryManagerClass; //offset = 964, size = 4
		InventoryManager* InvManager; //offset = 968, size = 4
		Weapon* Weapon; //offset = 972, size = 4
		Int m_nPhysicsRollAngle; //offset = 976, size = 4
		Float m_fWallSlideSpeedAdj; //offset = 980, size = 4
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> mapOccupiedLevels; //offset = 984, size = 20
		Vector FlashLocation; //offset = 1004, size = 12
		Vector LastFiringFlashLocation; //offset = 1016, size = 12
		Int ShotCount; //offset = 1028, size = 4
		PrimitiveComponent* PreRagdollCollisionComponent; //offset = 1032, size = 4
		Pointer PhysicsPushBody; //offset = 1036, size = 4
		Int FailedLandingCount; //offset = 1040, size = 4
		Byte PreStasisPhysicsState; //offset = 1044, size = 1
		Object* Stats; //offset = 1048, size = 4

		void SFXDoComponentAction( ActorComponent* pComponent );
		void GetAdjustedMoveDirection( Vector Dest, Actor* MoveTarget, Vector Direction );
		Bool IsDead();
		Bool InPlayerParty();
		Float GetMaxSpeed();
		Float GetDesiredSpeed();
		void SetDesiredSpeed( Float fSpeedScaling );
		void ClearPathStep();
		void DrawPathStep( Canvas* C );
		void IncrementPathChild( Int Cnt, Canvas* C );
		void IncrementPathStep( Int Cnt, Canvas* C );
		PathGoalEvaluator* CreatePathGoalEvaluator( Class* GoalEvalClass );
		PathConstraint* CreatePathConstraint( Class* ConstraintClass );
		void AddGoalEvaluator( PathGoalEvaluator* Evaluator );
		void AddPathConstraint( PathConstraint* Constraint );
		void ClearConstraints();
		void SoakPause( PlayerController* PC );
		void BecomeViewTarget( PlayerController* PC );
		void AdjustCameraScale( Bool bMoveCameraIn );
		void MessagePlayer( String msg );
		Bool EffectIsRelevant( Vector SpawnLocation, Bool bForceDedicated, Float CullDistance, PlayerController* P );
		void OnTeleport( SeqAct_Teleport* Action, Array<Object*> objVars, Int idx, Actor* destActor, Controller* C );
		void OnSetMaterial( SeqAct_SetMaterial* Action );
		Bool InCombat();
		Bool PoweredUp();
		Float GetDamageScaling();
		void DoKismetAttachment( Actor* Attachment, SeqAct_AttachToActor* Action, Bool bOldCollideActors, Bool bOldBlockActors, Bool bValidBone, Bool bValidSocket );
		void SpawnedByKismet();
		Bool IsStationary();
		Vector GetCollisionExtent(, Vector Extent );
		Float GetCollisionHeight();
		Float GetCollisionRadius();
		Bool CheatFly();
		Bool CheatGhost();
		Bool CheatWalk();
		void PlayWeaponSwitch( Weapon* OldWeapon, Weapon* NewWeapon );
		void SetActiveWeapon( Weapon* NewWeapon );
		void TossWeapon( Weapon* Weap, Vector ForceVelocity, Vector POVLoc, Vector TossVel, Rotator POVRot, Vector X, Vector Y, Vector Z );
		void ThrowActiveWeapon();
		void DrawHUD( HUD* H );
		Inventory* FindInventoryType( Class* DesiredClass, Bool bAllowSubclass );
		Inventory* CreateInventory( Class* NewInvClass, Bool bDoNotActivate );
		void AddDefaultInventory();
		void StopDriving( Vehicle* V );
		void StartDriving( Vehicle* V );
		Bool CanThrowWeapon();
		void Suicide();
		Vehicle* GetVehicleBase();
		void PlayLanded( Float ImpactVel );
		Bool CannotJumpNow();
		void PlayFootStepSound( Int FootDown );
		void TornOff();
		void PlayDying( Class* DamageType, Vector HitLoc );
		void TurnOff();
		void PlayHit( Float Damage, Controller* InstigatedBy, Vector HitLocation, Class* DamageType, Vector Momentum, TraceHitInfo HitInfo );
		void PlayDyingSound();
		Bool DoJump( Bool bUpdating );
		Bool CheckWaterJump( Vector WallNormal, Actor* HitActor, Vector HitLocation, Vector HitNormal, Vector Checkpoint, Vector Start, Vector checkNorm, Vector Extent );
		void TakeDrowningDamage();
		void BreathTimer();
		Bool IsInPain(, PhysicsVolume* V );
		Bool TouchingWaterVolume(, PhysicsVolume* V );
		void HeadVolumeChange( PhysicsVolume* newHeadVolume );
		void Landed( Vector HitNormal, Actor* FloorActor );
		void HitWall( Vector HitNormal, Actor* Wall, PrimitiveComponent* WallComp );
		void Falling();
		Bool Died( Controller* Killer, Class* DamageType, Vector HitLocation, SeqAct_Latent* Action );
		Bool IsSameTeam( Pawn* Other );
		TeamInfo* GetTeam();
		Byte GetTeamNum();
		void TakeDamage( Float Damage, Controller* InstigatedBy, Vector HitLocation, Vector Momentum, Class* DamageType, TraceHitInfo HitInfo, Actor* DamageCauser, Int actualDamage, PlayerController* PC, Controller* Killer );
		Controller* SetKillInstigator( Controller* InstigatedBy, Class* DamageType );
		void NotifyTakeHit( Controller* InstigatedBy, Vector HitLocation, Int Damage, Class* DamageType, Vector Momentum );
		Bool TakeRadiusDamageOnBones( Controller* InstigatedBy, Float BaseDamage, Float DamageRadius, Class* DamageType, Float Momentum, Vector HurtOrigin, Bool bFullDamage, Actor* DamageCauser, Array<Name> Bones, Int idx, TraceHitInfo HitInfo, Bool bResult, Float DamageScale, Float Dist, Vector Dir, Vector BoneLoc );
		void PruneDamagedBoneList( Array<Name> Bones );
		Bool HealDamage( Int Amount, Controller* Healer, Class* DamageType );
		void AdjustDamage( Int inDamage, Vector Momentum, Controller* InstigatedBy, Vector HitLocation, Class* DamageType, TraceHitInfo HitInfo );
		void SetMovementPhysics();
		void Gasp();
		void OnGiveInventory( SeqAct_GiveInventory* inAction, Int idx, Class* InvClass );
		void OnAssignController( SeqAct_AssignController* inAction );
		void SpawnDefaultController();
		void PostBeginPlay();
		void PreBeginPlay();
		void Destroyed();
		void DetachFromController( Bool bDestroyController, Controller* OldController );
		void CrushedBy( Pawn* OtherPawn );
		Bool CanBeBaseForPawn( Pawn* aPawn );
		void BaseChange( DynamicSMActor* Dyn );
		void StuckOnPawn( Pawn* OtherPawn );
		void JumpOffPawn();
		void gibbedBy( Actor* Other );
		void EncroachedBy( Actor* Other );
		Bool EncroachingOn( Actor* Other );
		void FaceRotation( Rotator NewRotation, Float DeltaTime );
		void ClientSetRotation( Rotator NewRotation );
		void ClientSetLocation( Vector NewLocation, Rotator NewRotation );
		void ClientRestart();
		void Restart();
		void TakeFallingDamage( Float EffectiveSpeed );
		void KilledBy( Pawn* EventInstigator, Controller* Killer );
		void AddVelocity( Vector NewVelocity, Vector HitLocation, Class* DamageType, TraceHitInfo HitInfo );
		void RestartPlayer();
		void StartCrouch( Float HeightAdjust );
		void EndCrouch( Float HeightAdjust );
		void ShouldCrouch( Bool bCrouch );
		void UnCrouch();
		void OutsideWorldBounds();
		void FellOutOfWorld( Class* dmgType );
		void ModifyVelocity( Float DeltaTime, Vector OldVelocity );
		void JumpOutOfWater( Vector jumpDir );
		void FinishedInterpolation();
		void ClientMessage( String S, Name Type );
		void ReceiveLocalizedMessage( Class* Message, Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject );
		void HandlePickup( Inventory* Inv );
		Float AdjustedStrength();
		Bool LineOfSightTo( Actor* Other );
		void SetMoveTarget( Actor* NewTarget );
		Actor* GetMoveTarget();
		Bool NearMoveTarget();
		Bool AffectedByHitEffects();
		Bool InGodMode();
		Bool PawnCalcCamera( Float fDeltaTime, Vector out_CamLoc, Rotator out_CamRot, Float out_FOV );
		void SetViewRotation( Rotator NewRotation );
		Rotator GetAdjustedAimFor( Weapon* W, Vector StartFireLoc );
		Bool InFreeCam(, PlayerController* PC );
		Rotator GetBaseAimRotation(, Vector POVLoc, Rotator POVRot );
		Vector GetWeaponStartTraceLocation( Weapon* CurrentWeapon, Vector POVLoc, Rotator POVRot );
		Vector GetPawnViewLocation();
		Rotator GetViewRotation(, PlayerController* PC );
		void GetActorEyesViewPoint( Vector out_Location, Rotator out_Rotation );
		void ProcessViewRotation( Float DeltaTime, Rotator out_ViewRotation, Rotator out_DeltaRot );
		Bool IsFirstPerson(, PlayerController* PC );
		Bool WasPlayerPawn();
		Bool IsPlayerPawn();
		Bool IsLocallyControlled();
		Bool IsHumanControlled();
		void DisplayDebug( HUD* HUD, Float out_YL, Float out_YPos, String T, Canvas* Canvas, AnimTree* AnimTreeRootNode, Int I );
		void ClimbLadder( LadderVolume* L );
		void EndClimbLadder( LadderVolume* OldLadder );
		Bool CanSplash();
		void SetWalking( Bool bNewIsWalking );
		Float RangedAttackTime();
		Bool RecommendLongRangedAttack();
		Bool CanGrabLadder();
		void DropToGround();
		Name GetDefaultCameraMode( PlayerController* RequestedBy );
		void UnPossessed();
		void UpdateControllerOnPossess( Bool bVehicleTransition );
		void PossessedBy( Controller* C, Bool bVehicleTransition );
		void NotifyTeamChanged();
		void PlayTeleportEffect( Bool bOut, Bool bSound );
		String GetHumanReadableName();
		Bool NeedToTurn( Vector targ, Vector LookDir, Vector AimDir );
		Bool IsFiring();
		Bool HasRangedAttack();
		Bool FireOnRelease();
		Bool TooCloseToAttack( Actor* Other );
		Bool CanAttack( Actor* Other );
		Byte ChooseFireMode();
		Bool BotFire( Bool bFinished );
		void WeaponStoppedFiring( Bool bViaReplication );
		void WeaponFired( Bool bViaReplication, Vector HitLocation );
		void FlashLocationUpdated( Bool bViaReplication );
		void FlashCountUpdated( Bool bViaReplication );
		void ClearFlashLocation( Weapon* Who );
		void SetFlashLocation( Weapon* Who, Byte FireModeNum, Vector NewLoc );
		void ClearFlashCount( Weapon* Who );
		void IncrementFlashCount( Weapon* Who, Byte FireModeNum );
		void FiringModeUpdated( Bool bViaReplication );
		void SetFiringMode( Byte FiringModeNum );
		void StopFire( Byte FireModeNum );
		void StartFire( Byte FireModeNum );
		Bool StopFiring();
		void Reset();
		void PlayerChangedTeam();
		void SetBaseEyeheight();
		Bool IsFriendly( Pawn* Other );
		Bool IsHostile( Pawn* Other );
		Bool SpecialMoveTo( NavigationPoint* Start, NavigationPoint* End, Actor* Next );
		void OnStreamingLevelLeavingStasis();
		void OnStreamingLevelEnteringStasis();
		Bool TermRagdoll();
		Bool InitRagdoll();
		Bool IsValidEnemy();
		Int SpecialCostForPath( ReachSpec* Path );
		void GetBoundingCylinder( Float CollisionRadius, Float CollisionHeight );
		void SetPushesRigidBodies( Bool NewPush );
		void ForceCrouch();
		Bool ReachedPoint( Vector Point, Actor* NewAnchor );
		Bool ReachedDestination( Actor* Goal );
		NavigationPoint* GetBestAnchor( Actor* TestActor, Vector TestLocation, Bool bStartPoint, Bool bOnlyCheckVisible, Float out_Dist );
		void SetAnchor( NavigationPoint* NewAnchor );
		void SetRemoteViewPitch( Int NewRemoteViewPitch );
		Bool IsInvisible();
		Bool IsValidEnemyTargetFor( PlayerReplicationInfo* PRI, Bool bNoPRIisEnemy );
		Bool IsValidTargetFor( Controller* C );
		Bool SuggestJumpVelocity( Vector JumpVelocity, Vector Destination, Vector Start );
		Bool ValidAnchor();
		void ReplicatedEvent( Name VarName );
	};


	class PickupFactory: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( PickupFactory, NavigationPoint, Engine )

	public:
		struct Disabled
		{
			/*
			BeginState
			SetInitialState
			StartSleeping
			Reset
			ReadyToPickup
			*/
		};

		struct Sleeping
		{
			/*
			EndState
			BeginState
			StartSleeping
			ReadyToPickup
			*/
		};

		struct WaitingForMatch
		{
			/*
			BeginState
			MatchStarting
			*/
		};

		struct Pickup
		{
			/*
			BeginState
			CheckTouching
			Touch
			RecheckValidTouch
			ValidTouch
			ReadyToPickup
			DetourWeight
			*/
		};

		Bool bOnlyReplicateHidden: 1; //offset = 776, size = 4
		Bool bPickupHidden: 1; //offset = 776, size = 4
		Bool bPredictRespawns: 1; //offset = 776, size = 4
		Bool bIsSuperItem: 1; //offset = 776, size = 4
		Class* InventoryType; //offset = 780, size = 4
		Float RespawnEffectTime; //offset = 784, size = 4
		Float MaxDesireability; //offset = 788, size = 4
		PrimitiveComponent* PickupMesh; //offset = 792, size = 4
		PickupFactory* ReplacementFactory; //offset = 796, size = 4
		PickupFactory* OriginalFactory; //offset = 800, size = 4

		Bool ShouldRespawn();
		void Destroyed();
		void SetPickupVisible();
		void SetPickupHidden();
		void RespawnEffect();
		Float GetRespawnTime();
		void RecheckValidTouch();
		void PickedUpBy( Pawn* P );
		void GiveTo( Pawn* P );
		Bool ReadyToPickup( Float MaxWait );
		void SpawnCopyFor( Pawn* Recipient, Inventory* Inv );
		Float DetourWeight( Pawn* Other, Float PathWeight );
		void StartSleeping();
		void SetRespawn();
		Bool CheckForErrors(, Actor* HitActor, Vector HitLocation, Vector HitNormal );
		void Reset();
		void StaticPrecache( WorldInfo* W );
		void SetPickupMesh();
		void ShutDown();
		void SetInitialState();
		void InitializePickup();
		void PreBeginPlay();
		void ReplicatedEvent( Name VarName );
	};

	struct AutomatedTestingDatum
	{
		Int NumberOfMatchesPlayed; //offset = 0, size = 4
		Int CurrAutomatedTestingMapIndex; //offset = 4, size = 4
		Int NumMapListCyclesDone; //offset = 8, size = 4
	};

	class PlayerReplicationInfo: public ReplicationInfo
	{
		DECLARE_PACKAGE_CLASS( PlayerReplicationInfo, ReplicationInfo, Engine )

	public:

		Float Score; //offset = 508, size = 4
		Float Deaths; //offset = 512, size = 4
		Byte Ping; //offset = 516, size = 1
		Byte PacketLoss; //offset = 517, size = 1
		Actor* PlayerLocationHint; //offset = 520, size = 4
		Int NumLives; //offset = 524, size = 4
		String PlayerName; //offset = 528, size = 12
		String PlayerAlias; //offset = 540, size = 12
		String OldName; //offset = 552, size = 12
		Int PlayerID; //offset = 564, size = 4
		TeamInfo* Team; //offset = 568, size = 4
		Int TeamID; //offset = 572, size = 4
		Bool bAdmin: 1; //offset = 576, size = 4
		Bool bIsFemale: 1; //offset = 576, size = 4
		Bool bIsSpectator: 1; //offset = 576, size = 4
		Bool bOnlySpectator: 1; //offset = 576, size = 4
		Bool bWaitingPlayer: 1; //offset = 576, size = 4
		Bool bReadyToPlay: 1; //offset = 576, size = 4
		Bool bOutOfLives: 1; //offset = 576, size = 4
		Bool bBot: 1; //offset = 576, size = 4
		Bool bHasFlag: 1; //offset = 576, size = 4
		Bool bHasBeenWelcomed: 1; //offset = 576, size = 4
		Bool bIsInactive: 1; //offset = 576, size = 4
		Bool bFromPreviousLevel: 1; //offset = 576, size = 4
		Bool bControllerVibrationAllowed: 1; //offset = 576, size = 4
		Int StartTime; //offset = 580, size = 4
		String StringDead; //offset = 584, size = 12
		String StringSpectating; //offset = 596, size = 12
		String StringUnknown; //offset = 608, size = 12
		Int Kills; //offset = 620, size = 4
		Class* GameMessageClass; //offset = 624, size = 4
		Float ExactPing; //offset = 628, size = 4
		String SavedNetworkAddress; //offset = 632, size = 12
		UniqueNetId UniqueId; //offset = 644, size = 8
		AutomatedTestingDatum AutomatedTestingData; //offset = 652, size = 12

		void SetPlayerAlias( String NewAlias );
		Bool IsInvalidName(, LocalPlayer* LocPlayer, PlayerController* PC, String ProfileName, OnlineSubsystem* OnlineSub );
		Byte GetTeamNum();
		Bool IsLocalPlayerPRI(, PlayerController* PC, LocalPlayer* LP );
		void BindPlayerOwnerDataProvider( PlayerController* PlayerOwner, LocalPlayer* LP, DataStoreClient* DataStoreManager, CurrentGameDataStore* CurrentGameData, PlayerDataProvider* DataProvider );
		void SeamlessTravelTo( PlayerReplicationInfo* NewPRI );
		void CopyProperties( PlayerReplicationInfo* PRI );
		void OverrideWith( PlayerReplicationInfo* PRI );
		PlayerReplicationInfo* Duplicate(, PlayerReplicationInfo* NewPRI );
		void SetWaitingPlayer( Bool B );
		void SetPlayerName( String S );
		void Timer();
		void DisplayDebug( HUD* HUD, Float YL, Float YPos, Float XS, Float YS );
		void UpdatePlayerLocation( Volume* V, Volume* Best, Pawn* P );
		String GetLocationName(, String LocationString );
		String GetHumanReadableName();
		void Reset();
		void Destroyed( PlayerController* PC, OnlineSubsystem* OnlineSub, UniqueNetId ZeroId );
		Bool ShouldBroadCastWelcomeMessage();
		void UpdatePing( Float TimeStamp );
		void ReplicatedEvent( Name VarName, Pawn* P, PlayerController* PC, Int WelcomeMessageNum, Actor* A, OnlineSubsystem* Online );
		void ClientInitialize( Controller* C, Actor* A );
		void PostBeginPlay();
		String GetPlayerAlias();
		Bool AreUniqueNetIdsEqual( PlayerReplicationInfo* OtherPRI );
	};

	class PlayerStart: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( PlayerStart, NavigationPoint, Engine )

	public:

		Bool bEnabled: 1; //offset = 776, size = 4
		Bool bPrimaryStart: 1; //offset = 776, size = 4

		void OnToggle( SeqAct_Toggle* Action );
	};

	class PointLight: public Light
	{
		DECLARE_PACKAGE_CLASS( PointLight, Light, Engine )

	public:
	};

	class PointLightComponent: public LightComponent
	{
		DECLARE_PACKAGE_CLASS( PointLightComponent, LightComponent, Engine )

	public:

		Float ShadowRadiusMultiplier; //offset = 384, size = 4
		Float Radius; //offset = 388, size = 4
		Float FalloffExponent; //offset = 392, size = 4
		Float ShadowFalloffExponent; //offset = 396, size = 4
		Float MinShadowFalloffRadius; //offset = 400, size = 4
		Matrix CachedParentToWorld; //offset = 416, size = 64
		Vector Translation; //offset = 480, size = 12
		Bool bAllowedInBasePass: 1; //offset = 492, size = 4
		DrawLightRadiusComponent* PreviewLightRadius; //offset = 496, size = 4

		void SetTranslation( Vector NewTranslation );
	};

	class PointLightMovable: public PointLight
	{
		DECLARE_PACKAGE_CLASS( PointLightMovable, PointLight, Engine )

	public:
	};

	class PointLightToggleable: public PointLight
	{
		DECLARE_PACKAGE_CLASS( PointLightToggleable, PointLight, Engine )

	public:
	};

	class PolyMarker: public Keypoint
	{
		DECLARE_PACKAGE_CLASS( PolyMarker, Keypoint, Engine )

	public:
	};

	class Polys: public Object
	{
		DECLARE_PACKAGE_CLASS( Polys, Object, Engine )

	public:
	};

	class PortalMarker: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( PortalMarker, NavigationPoint, Engine )

	public:

		PortalTeleporter* MyPortal; //offset = 776, size = 4

		Bool CanTeleport( Actor* A );
	};

	class SceneCaptureActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( SceneCaptureActor, Actor, Engine )

	public:

		SceneCaptureComponent* SceneCapture; //offset = 508, size = 4

		void OnToggle( SeqAct_Toggle* Action );
		void SetEnabled( Bool bEnabled );
	};

	class SceneCaptureReflectActor: public SceneCaptureActor
	{
		DECLARE_PACKAGE_CLASS( SceneCaptureReflectActor, SceneCaptureActor, Engine )

	public:

		StaticMeshComponent* StaticMesh; //offset = 512, size = 4
		MaterialInstanceConstant* ReflectMaterialInst; //offset = 516, size = 4
	};

	class SceneCapturePortalActor: public SceneCaptureReflectActor
	{
		DECLARE_PACKAGE_CLASS( SceneCapturePortalActor, SceneCaptureReflectActor, Engine )

	public:

		StaticMesh* CameraMesh; //offset = 520, size = 4
		StaticMeshComponent* CameraComp; //offset = 524, size = 4
		StaticMesh* TexPropPlaneMesh; //offset = 528, size = 4

		void PreBeginPlay();
	};

	class PortalTeleporter: public SceneCapturePortalActor
	{
		DECLARE_PACKAGE_CLASS( PortalTeleporter, SceneCapturePortalActor, Engine )

	public:

		PortalTeleporter* SisterPortal; //offset = 532, size = 4
		Int TextureResolutionX; //offset = 536, size = 4
		Int TextureResolutionY; //offset = 540, size = 4
		PortalMarker* MyMarker; //offset = 544, size = 4
		Bool bMovablePortal: 1; //offset = 548, size = 4
		Bool bAlwaysTeleportNonPawns: 1; //offset = 548, size = 4
		Bool bCanTeleportVehicles: 1; //offset = 548, size = 4

		Bool StopsProjectile( Projectile* P );
		TextureRenderTarget2D* CreatePortalTexture();
		Vector TransformHitLocation( Vector HitLocation );
		Vector TransformVector( Vector V );
		Bool TransformActor( Actor* A );
	};

	class PortalVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( PortalVolume, Volume, Engine )

	public:

		Array<PortalTeleporter*> Portals; //offset = 568, size = 12
	};

	enum EAddPostProcessEffectCombineType
	{
		EAPPE_Override,
		EAPPE_Combine,
	};

	struct RequestedPostProcessEffect
	{
		PostProcessEffect* pEffect; //offset = 0, size = 4
		Pointer pOwner; //offset = 4, size = 4
		Byte CombineType; //offset = 8, size = 1
	};

	class PostProcessChain: public Object
	{
		DECLARE_PACKAGE_CLASS( PostProcessChain, Object, Engine )

	public:

		Array<PostProcessEffect*> Effects; //offset = 60, size = 12

		PostProcessEffect* FindPostProcessEffect( Name EffectName, Int idx );
	};

	struct PostProcessSettings
	{
		Bool bEnableBloom: 1; //offset = 0, size = 4
		Bool bEnableDOF: 1; //offset = 0, size = 4
		Bool bEnableMotionBlur: 1; //offset = 0, size = 4
		Bool bEnableSceneEffect: 1; //offset = 0, size = 4
		Bool bEnableFilmic: 1; //offset = 0, size = 4
		Float Bloom_Scale; //offset = 4, size = 4
		Float Bloom_InterpolationDuration; //offset = 8, size = 4
		Float DOF_FalloffExponent; //offset = 12, size = 4
		Float DOF_BlurKernelSize; //offset = 16, size = 4
		Float DOF_MaxNearBlurAmount; //offset = 20, size = 4
		Float DOF_MaxFarBlurAmount; //offset = 24, size = 4
		Color DOF_ModulateBlurColor; //offset = 28, size = 4
		Byte DOF_FocusType; //offset = 32, size = 1
		Float DOF_FocusInnerRadius; //offset = 36, size = 4
		Float DOF_FocusDistance; //offset = 40, size = 4
		Vector DOF_FocusPosition; //offset = 44, size = 12
		Float DOF_InterpolationDuration; //offset = 56, size = 4
		Float MotionBlur_MaxVelocity; //offset = 60, size = 4
		Float MotionBlur_Amount; //offset = 64, size = 4
		Bool MotionBlur_FullMotionBlur: 1; //offset = 68, size = 4
		Float MotionBlur_CameraRotationThreshold; //offset = 72, size = 4
		Float MotionBlur_CameraTranslationThreshold; //offset = 76, size = 4
		Float MotionBlur_InterpolationDuration; //offset = 80, size = 4
		Float Scene_Desaturation; //offset = 84, size = 4
		Vector Scene_HighLights; //offset = 88, size = 12
		Vector Scene_MidTones; //offset = 100, size = 12
		Vector Scene_Shadows; //offset = 112, size = 12
		Float Scene_InterpolationDuration; //offset = 124, size = 4
		Float PP_DesaturationMultiplier; //offset = 128, size = 4
		Float PP_HighlightsMultiplier; //offset = 132, size = 4
		Float PP_MidTonesMultiplier; //offset = 136, size = 4
		Float PP_ShadowsMultiplier; //offset = 140, size = 4
	};

	class PostProcessVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( PostProcessVolume, Volume, Engine )

	public:

		Float Priority; //offset = 568, size = 4
		PostProcessSettings Settings; //offset = 572, size = 144
		PostProcessVolume* NextLowerPriorityVolume; //offset = 716, size = 4
		Bool bEnabled: 1; //offset = 720, size = 4

		void OnToggle( SeqAct_Toggle* Action );
	};

	class PotentialClimbWatcher: public Info
	{
		DECLARE_PACKAGE_CLASS( PotentialClimbWatcher, Info, Engine )

	public:

		void Tick( Float DeltaTime, Rotator PawnRot, LadderVolume* L, Bool bFound );
	};

	class Projectile: public Actor
	{
		DECLARE_PACKAGE_CLASS( Projectile, Actor, Engine )

	public:

		Float Speed; //offset = 508, size = 4
		Float MaxSpeed; //offset = 512, size = 4
		Bool bSwitchToZeroCollision: 1; //offset = 516, size = 4
		Bool bBlockedByInstigator: 1; //offset = 516, size = 4
		Bool bBegunPlay: 1; //offset = 516, size = 4
		Bool bRotationFollowsVelocity: 1; //offset = 516, size = 4
		Bool bNotBlockedByShield: 1; //offset = 516, size = 4
		Actor* ZeroCollider; //offset = 520, size = 4
		PrimitiveComponent* ZeroColliderComponent; //offset = 524, size = 4
		Float Damage; //offset = 528, size = 4
		Float DamageRadius; //offset = 532, size = 4
		Float MomentumTransfer; //offset = 536, size = 4
		Class* MyDamageType; //offset = 540, size = 4
		SoundCue* SpawnSound; //offset = 544, size = 4
		SoundCue* ImpactSound; //offset = 548, size = 4
		Controller* InstigatorController; //offset = 552, size = 4
		Actor* ImpactedActor; //offset = 556, size = 4
		Float NetCullDistanceSquared; //offset = 560, size = 4
		CylinderComponent* CylinderComponent; //offset = 564, size = 4

		Float GetRange();
		Float StaticGetTimeToLocation( Vector TargetLoc, Vector StartLoc, Controller* RequestedBy );
		Float GetTimeToLocation( Vector TargetLoc );
		void FellOutOfWorld( Class* dmgType );
		Bool IsStationary();
		void RandSpin( Float spinRate );
		void Explode( Vector HitLocation, Vector HitNormal );
		void EncroachedBy( Actor* Other );
		void HitWall( Vector HitNormal, Actor* Wall, PrimitiveComponent* WallComp );
		void ProcessTouch( Actor* Other, Vector HitLocation, Vector HitNormal );
		void Touch( Actor* Other, PrimitiveComponent* OtherComp, Vector HitLocation, Vector HitNormal );
		Bool HurtRadius( Float DamageAmount, Float InDamageRadius, Class* DamageType, Float Momentum, Vector HurtOrigin, Actor* IgnoredActor, Controller* InstigatedByController, Bool bDoFullDamage, Bool bCausedDamage, Bool bResult );
		void Reset();
		Bool CanSplash();
		Byte GetTeamNum();
		void Init( Vector Direction );
		void PostBeginPlay();
		void PreBeginPlay();
		Bool EncroachingOn( Actor* Other );
	};

	class ProscribedReachSpec: public ReachSpec
	{
		DECLARE_PACKAGE_CLASS( ProscribedReachSpec, ReachSpec, Engine )

	public:
	};

	class ResourceAttacher: public Object
	{
		DECLARE_PACKAGE_CLASS( ResourceAttacher, Object, Engine )

	public:

		Object* m_pObj; //offset = 60, size = 4
	};

	enum ReverbPreset
	{
		REVERB_CASTLE_SMALLROOM,
		REVERB_CASTLE_SHORTPASSAGE,
		REVERB_CASTLE_MEDIUMROOM,
		REVERB_CASTLE_LONGPASSAGE,
		REVERB_CASTLE_LARGEROOM,
		REVERB_CASTLE_HALL,
		REVERB_CASTLE_CUPBOARD,
		REVERB_CASTLE_COURTYARD,
		REVERB_CASTLE_ALCOVE,
		REVERB_FACTORY_ALCOVE,
		REVERB_FACTORY_SHORTPASSAGE,
		REVERB_FACTORY_MEDIUMROOM,
		REVERB_FACTORY_LONGPASSAGE,
		REVERB_FACTORY_LARGEROOM,
		REVERB_FACTORY_HALL,
		REVERB_FACTORY_CUPBOARD,
		REVERB_FACTORY_COURTYARD,
		REVERB_FACTORY_SMALLROOM,
		REVERB_ICEPALACE_ALCOVE,
		REVERB_ICEPALACE_SHORTPASSAGE,
		REVERB_ICEPALACE_MEDIUMROOM,
		REVERB_ICEPALACE_LONGPASSAGE,
		REVERB_ICEPALACE_LARGEROOM,
		REVERB_ICEPALACE_HALL,
		REVERB_ICEPALACE_CUPBOARD,
		REVERB_ICEPALACE_COURTYARD,
		REVERB_ICEPALACE_SMALLROOM,
		REVERB_SPACESTATION_ALCOVE,
		REVERB_SPACESTATION_MEDIUMROOM,
		REVERB_SPACESTATION_SHORTPASSAGE,
		REVERB_SPACESTATION_LONGPASSAGE,
		REVERB_SPACESTATION_LARGEROOM,
		REVERB_SPACESTATION_HALL,
		REVERB_SPACESTATION_CUPBOARD,
		REVERB_SPACESTATION_SMALLROOM,
		REVERB_WOODEN_ALCOVE,
		REVERB_WOODEN_SHORTPASSAGE,
		REVERB_WOODEN_MEDIUMROOM,
		REVERB_WOODEN_LONGPASSAGE,
		REVERB_WOODEN_LARGEROOM,
		REVERB_WOODEN_HALL,
		REVERB_WOODEN_CUPBOARD,
		REVERB_WOODEN_SMALLROOM,
		REVERB_WOODEN_COURTYARD,
		REVERB_SPORT_EMPTYSTADIUM,
	};

	struct ReverbSettings
	{
		Byte ReverbType; //offset = 0, size = 1
		Float Volume; //offset = 4, size = 4
		Float FadeTime; //offset = 8, size = 4
	};

	class ReverbVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( ReverbVolume, Volume, Engine )

	public:

		Float Priority; //offset = 568, size = 4
		ReverbSettings Settings; //offset = 572, size = 12
		ReverbVolume* NextLowerPriorityVolume; //offset = 584, size = 4

		void UnTouch( Actor* Other );
	};

	enum ERouteType
	{
		ERT_Linear,
		ERT_Loop,
	};

	enum ERouteDirection
	{
		ERD_Forward,
		ERD_Reverse,
	};

	enum ERouteFillAction
	{
		RFA_Overwrite,
		RFA_Add,
		RFA_Remove,
	};

	class Route: public Info
	{
		DECLARE_PACKAGE_CLASS( Route, Info, Engine )

	public:

		Byte RouteType; //offset = 508, size = 1
		Array<NavReference> NavList; //offset = 512, size = 12
	};

	struct EMG_Entry
	{
		MaterialInterface* m_pMaterial; //offset = 0, size = 4
		Name m_nmEffect; //offset = 4, size = 8
	};

	class RvrEffectsMaterialGroup: public Object
	{
		DECLARE_PACKAGE_CLASS( RvrEffectsMaterialGroup, Object, Engine )

	public:

		Array<EMG_Entry> m_lstEffects; //offset = 60, size = 12
		Guid m_Guid; //offset = 72, size = 16
	};

	struct RvrMultiplexorEntry
	{
		MaterialInterface* m_pMaterial; //offset = 0, size = 4
		Name m_nmTag; //offset = 4, size = 8
	};

	class RvrMaterialMultiplexor: public MaterialInterface
	{
		DECLARE_PACKAGE_CLASS( RvrMaterialMultiplexor, MaterialInterface, Engine )

	public:

		Name m_nmParentNameParameter; //offset = 88, size = 8
		MaterialInterface* m_pDefaultMaterial; //offset = 96, size = 4
		Array<RvrMultiplexorEntry> m_lstParents; //offset = 100, size = 12
		Pointer DefaultMaterialInstances[2]; //offset = 112, size = 4
		Bool ReentrantFlag: 1; //offset = 120, size = 4
	};

	class RvrEffectsMaterialUser: public MaterialInterface
	{
		DECLARE_PACKAGE_CLASS( RvrEffectsMaterialUser, MaterialInterface, Engine )

	public:

		Pointer VfTable_FCallbackEventDevice; //offset = 88, size = 4
		MaterialInterface* m_pBaseMaterial; //offset = 92, size = 4
		RvrEffectsMaterialGroup* m_pEffectsGroup; //offset = 96, size = 4
		RvrMaterialMultiplexor* m_pMultiplexor; //offset = 100, size = 4
		MaterialInterface* m_pParentMaterial; //offset = 104, size = 4
		Bool ReentrantFlag: 1; //offset = 108, size = 4
		Array<Guid> m_lstParentGuids; //offset = 112, size = 12
		Bool m_bSupportsStaticMeshes: 1; //offset = 124, size = 4
	};

	class SavedMove: public Object
	{
		DECLARE_PACKAGE_CLASS( SavedMove, Object, Engine )

	public:

		SavedMove* NextMove; //offset = 60, size = 4
		Float TimeStamp; //offset = 64, size = 4
		Float Delta; //offset = 68, size = 4
		Bool bRun: 1; //offset = 72, size = 4
		Bool bDuck: 1; //offset = 72, size = 4
		Bool bPressedJump: 1; //offset = 72, size = 4
		Bool bDoubleJump: 1; //offset = 72, size = 4
		Bool bPreciseDestination: 1; //offset = 72, size = 4
		Bool bForceRMVelocity: 1; //offset = 72, size = 4
		Byte DoubleClickMove; //offset = 76, size = 1
		Byte SavedPhysics; //offset = 77, size = 1
		Vector StartLocation; //offset = 80, size = 12
		Vector StartRelativeLocation; //offset = 92, size = 12
		Vector StartVelocity; //offset = 104, size = 12
		Vector StartFloor; //offset = 116, size = 12
		Vector SavedLocation; //offset = 128, size = 12
		Vector SavedVelocity; //offset = 140, size = 12
		Vector SavedRelativeLocation; //offset = 152, size = 12
		Vector RMVelocity; //offset = 164, size = 12
		Vector Acceleration; //offset = 176, size = 12
		Rotator Rotation; //offset = 188, size = 12
		Actor* StartBase; //offset = 200, size = 4
		Actor* EndBase; //offset = 204, size = 4
		Float CustomTimeDilation; //offset = 208, size = 4
		Float AccelDotThreshold; //offset = 212, size = 4

		Byte SetFlags( Byte Flags, PlayerController* PC );
		Byte CompressedFlags(, Byte Result );
		void SetMoveFor( PlayerController* P, Float DeltaTime, Vector newAccel, Byte InDoubleClick );
		Bool CanCombineWith( SavedMove* NewMove, Pawn* inPawn, Float MaxDelta );
		void SetInitialPosition( Pawn* P );
		Vector GetStartLocation();
		Bool IsImportantMove( Vector CompareAccel, Vector AccelNorm );
		void PostUpdate( PlayerController* P );
		void Clear();
	};

	class SaveGameSummary: public Object
	{
		DECLARE_PACKAGE_CLASS( SaveGameSummary, Object, Engine )

	public:

		Name BaseLevel; //offset = 60, size = 8
		String Description; //offset = 68, size = 12
	};

	class SceneCapture2DActor: public SceneCaptureActor
	{
		DECLARE_PACKAGE_CLASS( SceneCapture2DActor, SceneCaptureActor, Engine )

	public:

		DrawFrustumComponent* DrawFrustum; //offset = 512, size = 4
		StaticMesh* CameraMesh; //offset = 516, size = 4
		StaticMeshComponent* CameraComp; //offset = 520, size = 4

		void PreBeginPlay();
	};

	enum ESceneCaptureViewMode
	{
		SceneCapView_Lit,
		SceneCapView_Unlit,
		SceneCapView_LitNoShadows,
	};

	class SceneCaptureComponent: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( SceneCaptureComponent, ActorComponent, Engine )

	public:

		Bool bEnablePostProcess: 1; //offset = 88, size = 4
		Bool bEnableFog: 1; //offset = 88, size = 4
		Bool bSkipUpdateIfOwnerOccluded: 1; //offset = 88, size = 4
		Bool bEnabled: 1; //offset = 88, size = 4
		Color ClearColor; //offset = 92, size = 4
		Byte ViewMode; //offset = 96, size = 1
		Int SceneLOD; //offset = 100, size = 4
		Float FrameRate; //offset = 104, size = 4
		PostProcessChain* PostProcess; //offset = 108, size = 4
		Float MaxUpdateDist; //offset = 112, size = 4
		Float MaxStreamingUpdateDist; //offset = 116, size = 4
		Pointer CaptureInfo; //offset = 120, size = 4
		Pointer ViewState; //offset = 124, size = 4
		Bool bNeedsSceneUpdate: 1; //offset = 128, size = 4

		void SetFrameRate( Float NewFrameRate );
	};

	class SceneCapture2DComponent: public SceneCaptureComponent
	{
		DECLARE_PACKAGE_CLASS( SceneCapture2DComponent, SceneCaptureComponent, Engine )

	public:

		TextureRenderTarget2D* TextureTarget; //offset = 132, size = 4
		Float FieldOfView; //offset = 136, size = 4
		Float NearPlane; //offset = 140, size = 4
		Float FarPlane; //offset = 144, size = 4
		Bool bUpdateMatrices: 1; //offset = 148, size = 4
		Matrix ViewMatrix; //offset = 160, size = 64
		Matrix ProjMatrix; //offset = 224, size = 64

		void SetView( Vector NewLocation, Rotator NewRotation );
		void SetCaptureParameters( TextureRenderTarget2D* NewTextureTarget, Float NewFOV, Float NewNearPlane, Float NewFarPlane );
	};

	class SceneCaptureCubeMapActor: public SceneCaptureActor
	{
		DECLARE_PACKAGE_CLASS( SceneCaptureCubeMapActor, SceneCaptureActor, Engine )

	public:

		StaticMeshComponent* StaticMesh; //offset = 512, size = 4
		MaterialInstanceConstant* CubeMaterialInst; //offset = 516, size = 4
	};

	class SceneCaptureCubeMapComponent: public SceneCaptureComponent
	{
		DECLARE_PACKAGE_CLASS( SceneCaptureCubeMapComponent, SceneCaptureComponent, Engine )

	public:

		TextureRenderTargetCube* TextureTarget; //offset = 132, size = 4
		Float NearPlane; //offset = 136, size = 4
		Float FarPlane; //offset = 140, size = 4
		Vector WorldLocation; //offset = 144, size = 12
	};

	class SceneCapturePortalComponent: public SceneCaptureComponent
	{
		DECLARE_PACKAGE_CLASS( SceneCapturePortalComponent, SceneCaptureComponent, Engine )

	public:

		TextureRenderTarget2D* TextureTarget; //offset = 132, size = 4
		Float ScaleFOV; //offset = 136, size = 4
		Actor* ViewDestination; //offset = 140, size = 4

		void SetCaptureParameters( TextureRenderTarget2D* NewTextureTarget, Float NewScaleFOV, Actor* NewViewDest );
	};

	class SceneCaptureReflectComponent: public SceneCaptureComponent
	{
		DECLARE_PACKAGE_CLASS( SceneCaptureReflectComponent, SceneCaptureComponent, Engine )

	public:

		TextureRenderTarget2D* TextureTarget; //offset = 132, size = 4
		Float ScaleFOV; //offset = 136, size = 4
	};

	struct PathSizeInfo
	{
		Name Desc; //offset = 0, size = 8
		Float Radius; //offset = 8, size = 4
		Float Height; //offset = 12, size = 4
		Float CrouchHeight; //offset = 16, size = 4
		Byte PathColor; //offset = 20, size = 1
	};

	class Scout: public Pawn
	{
		DECLARE_PACKAGE_CLASS( Scout, Pawn, Engine )

	public:

		Array<PathSizeInfo> PathSizes; //offset = 1052, size = 12
		Float TestJumpZ; //offset = 1064, size = 4
		Float TestGroundSpeed; //offset = 1068, size = 4
		Float TestMaxFallSpeed; //offset = 1072, size = 4
		Float TestFallSpeed; //offset = 1076, size = 4
		Float MaxLandingVelocity; //offset = 1080, size = 4
		Int MinNumPlayerStarts; //offset = 1084, size = 4
		Class* DefaultReachSpecClass; //offset = 1088, size = 4
		Bool bHightlightOneWayReachSpecs: 1; //offset = 1092, size = 4

		void PreBeginPlay();
	};

	class ServerCommandlet: public Commandlet
	{
		DECLARE_PACKAGE_CLASS( ServerCommandlet, Commandlet, Engine )

	public:
	};

	class SFXModule: public Object
	{
		DECLARE_PACKAGE_CLASS( SFXModule, Object, Engine )

	public:

		Actor* Owner; //offset = 60, size = 4
		Bool bTickWhilePaused: 1; //offset = 64, size = 4

		void PostBeginPlay();
		void Tick( Float DeltaTime );
	};

	class SFXBaseGamePropertiesModule: public SFXModule
	{
		DECLARE_PACKAGE_CLASS( SFXBaseGamePropertiesModule, SFXModule, Engine )

	public:
	};

	class SFXDynamicCoverLink: public CoverLink
	{
		DECLARE_PACKAGE_CLASS( SFXDynamicCoverLink, CoverLink, Engine )

	public:

		Actor* m_aContainingActor; //offset = 888, size = 4
	};

	class SFXDynamicCoverSlotMarker: public CoverSlotMarker
	{
		DECLARE_PACKAGE_CLASS( SFXDynamicCoverSlotMarker, CoverSlotMarker, Engine )

	public:
	};

	class SFXDynamicPathNode: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( SFXDynamicPathNode, NavigationPoint, Engine )

	public:

		Actor* m_aContainingActor; //offset = 776, size = 4
	};

	class ShaderCache: public Object
	{
		DECLARE_PACKAGE_CLASS( ShaderCache, Object, Engine )

	public:
	};

	class ShadowMap1D: public Object
	{
		DECLARE_PACKAGE_CLASS( ShadowMap1D, Object, Engine )

	public:
	};

	class ShadowMapTexture2D: public Texture2D
	{
		DECLARE_PACKAGE_CLASS( ShadowMapTexture2D, Texture2D, Engine )

	public:
	};

	class ShadowMap2D: public Object
	{
		DECLARE_PACKAGE_CLASS( ShadowMap2D, Object, Engine )

	public:

		ShadowMapTexture2D* Texture; //offset = 60, size = 4
		Vector2D CoordinateScale; //offset = 64, size = 8
		Vector2D CoordinateBias; //offset = 72, size = 8
		Guid LightGuid; //offset = 80, size = 16
	};

	enum ClothBoneType
	{
		CLOTHBONE_Fixed,
		CLOTHBONE_BreakableAttachment,
	};

	struct ClothSpecialBoneInfo
	{
		Name BoneName; //offset = 0, size = 8
		Byte BoneType; //offset = 8, size = 1
		Array<Int> AttachedVertexIndices; //offset = 12, size = 12
	};

	struct SkeletalMeshLODInfo
	{
		Float DisplayFactor; //offset = 0, size = 4
		Float LODHysteresis; //offset = 4, size = 4
		Array<Int> LODMaterialMap; //offset = 8, size = 12
		Array<Bool> bEnableShadowCasting; //offset = 20, size = 12
	};

	struct BoneMirrorInfo
	{
		Int SourceIndex; //offset = 0, size = 4
		Byte BoneFlipAxis; //offset = 4, size = 1
	};

	class SkeletalMesh: public Object
	{
		DECLARE_PACKAGE_CLASS( SkeletalMesh, Object, Engine )

	public:

		BoxSphereBounds Bounds; //offset = 60, size = 28
		Array<MaterialInterface*> Materials; //offset = 88, size = 12
		Vector Origin; //offset = 100, size = 12
		Rotator RotOrigin; //offset = 112, size = 12
		Array<Int> RefSkeleton; //offset = 124, size = 12
		Int SkeletalDepth; //offset = 136, size = 4
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> NameIndexMap; //offset = 140, size = 20
		IndirectArray_Mirror LODModels; //offset = 160, size = 12
		Array<Matrix> RefBasesInvMatrix; //offset = 172, size = 12
		Array<BoneMirrorInfo> SkelMirrorTable; //offset = 184, size = 12
		Byte SkelMirrorAxis; //offset = 196, size = 1
		Byte SkelMirrorFlipAxis; //offset = 197, size = 1
		Array<SkeletalMeshSocket*> Sockets; //offset = 200, size = 12
		UntypedBulkData_Mirror BoneLimits; //offset = 212, size = 52
		Array<Int> RefSkeletonBackup; //offset = 264, size = 12
		Array<SkeletalMeshLODInfo> LODInfo; //offset = 276, size = 12
		Array<Name> PerPolyCollisionBones; //offset = 288, size = 12
		Array<Name> AddToParentPerPolyCollisionBone; //offset = 300, size = 12
		Array<Int> PerPolyBoneKDOPs; //offset = 312, size = 12
		Bool bPerPolyUseSoftWeighting: 1; //offset = 324, size = 4
		Bool bUseSimpleLineCollision: 1; //offset = 324, size = 4
		Bool bUseSimpleBoxCollision: 1; //offset = 324, size = 4
		Bool bForceCPUSkinning: 1; //offset = 324, size = 4
		Bool bUseFullPrecisionUVs: 1; //offset = 324, size = 4
		FaceFXAsset* FaceFXAsset; //offset = 328, size = 4
		PhysicsAsset* BoundsPreviewAsset; //offset = 332, size = 4
		Name StartDisplayBoneName; //offset = 336, size = 8
		Int LODBiasPC; //offset = 344, size = 4
		Int LODBiasPS3; //offset = 348, size = 4
		Int LODBiasXbox360; //offset = 352, size = 4
		Array<Pointer> ClothMesh; //offset = 356, size = 12
		Array<Float> ClothMeshScale; //offset = 368, size = 12
		Array<Int> ClothToGraphicsVertMap; //offset = 380, size = 12
		Array<Int> ClothWeldingMap; //offset = 392, size = 12
		Int ClothWeldingDomain; //offset = 404, size = 4
		Array<Int> ClothWeldedIndices; //offset = 408, size = 12
		Bool bForceNoWelding: 1; //offset = 420, size = 4
		Int NumFreeClothVerts; //offset = 424, size = 4
		Array<Int> ClothIndexBuffer; //offset = 428, size = 12
		Array<Name> ClothBones; //offset = 440, size = 12
		Bool bEnableClothBendConstraints: 1; //offset = 452, size = 4
		Bool bEnableClothDamping: 1; //offset = 452, size = 4
		Bool bUseClothCOMDamping: 1; //offset = 452, size = 4
		Float ClothStretchStiffness; //offset = 456, size = 4
		Float ClothBendStiffness; //offset = 460, size = 4
		Float ClothDensity; //offset = 464, size = 4
		Float ClothThickness; //offset = 468, size = 4
		Float ClothDamping; //offset = 472, size = 4
		Int ClothIterations; //offset = 476, size = 4
		Float ClothFriction; //offset = 480, size = 4
		Float ClothRelativeGridSpacing; //offset = 484, size = 4
		Float ClothPressure; //offset = 488, size = 4
		Float ClothCollisionResponseCoefficient; //offset = 492, size = 4
		Float ClothAttachmentResponseCoefficient; //offset = 496, size = 4
		Float ClothAttachmentTearFactor; //offset = 500, size = 4
		Float ClothSleepLinearVelocity; //offset = 504, size = 4
		Bool bEnableClothOrthoBendConstraints: 1; //offset = 508, size = 4
		Bool bEnableClothSelfCollision: 1; //offset = 508, size = 4
		Bool bEnableClothPressure: 1; //offset = 508, size = 4
		Bool bEnableClothTwoWayCollision: 1; //offset = 508, size = 4
		Array<ClothSpecialBoneInfo> ClothSpecialBones; //offset = 512, size = 12
		Bool bEnableClothLineChecks: 1; //offset = 524, size = 4
		Bool bClothMetal: 1; //offset = 524, size = 4
		Float ClothMetalImpulseThreshold; //offset = 528, size = 4
		Float ClothMetalPenetrationDepth; //offset = 532, size = 4
		Float ClothMetalMaxDeformationDistance; //offset = 536, size = 4
		Bool bEnableClothTearing: 1; //offset = 540, size = 4
		Float ClothTearFactor; //offset = 544, size = 4
		Int ClothTearReserve; //offset = 548, size = 4
		Map_Mirror ClothTornTriMap; //offset = 552, size = 20
		Int ReleaseResourcesFence; //offset = 572, size = 4
		Guid SkelMeshGUID; //offset = 576, size = 16
		Pointer m_VerticesPerBone; //offset = 592, size = 4
	};

	enum EFaceFXRegOp
	{
		FXRO_Add,
		FXRO_Multiply,
	};

	enum EFaceFXBlendMode
	{
		FXBM_Overwrite,
		FXBM_Additive,
	};

	enum ERootMotionRotationMode
	{
		RMRM_Ignore,
		RMRM_RotateActor,
	};

	enum ERootMotionMode
	{
		RMM_Translate,
		RMM_Velocity,
		RMM_Ignore,
	};

	struct BoneDrivenMaterialParameter
	{
		Int MaterialSlot; //offset = 0, size = 4
		Name ParameterName; //offset = 4, size = 8
		Name BoneName; //offset = 12, size = 8
		Bool LocalSpace: 1; //offset = 20, size = 4
		Int Axis; //offset = 24, size = 4
	};

	struct BoneOverrideInfo
	{
		Int BoneIndex; //offset = 0, size = 4
		Vector Position; //offset = 4, size = 12
		Quat Orientation; //offset = 16, size = 16
		Matrix BasesInvMatrix; //offset = 32, size = 64
	};

	struct FaceMorphData
	{
		Int nChunkID; //offset = 0, size = 4
		Int nVertexID; //offset = 4, size = 4
		Vector vOffset; //offset = 8, size = 12
		Byte TangentX1; //offset = 20, size = 1
		Byte TangentX2; //offset = 21, size = 1
		Byte TangentX3; //offset = 22, size = 1
		Byte TangentX4; //offset = 23, size = 1
		Byte TangentY1; //offset = 24, size = 1
		Byte TangentY2; //offset = 25, size = 1
		Byte TangentY3; //offset = 26, size = 1
		Byte TangentY4; //offset = 27, size = 1
		Byte TangentZ1; //offset = 28, size = 1
		Byte TangentZ2; //offset = 29, size = 1
		Byte TangentZ3; //offset = 30, size = 1
		Byte TangentZ4; //offset = 31, size = 1
	};

	struct Attachment
	{
		ActorComponent* Component; //offset = 0, size = 4
		Name BoneName; //offset = 4, size = 8
		Vector RelativeLocation; //offset = 12, size = 12
		Rotator RelativeRotation; //offset = 24, size = 12
		Vector RelativeScale; //offset = 36, size = 12
	};

	struct ActiveMorph
	{
		MorphTarget* Target; //offset = 0, size = 4
		Float Weight; //offset = 4, size = 4
	};

	struct AnimTickEntry
	{
		AnimNode* Node; //offset = 0, size = 4
		Float TotalWeight; //offset = 4, size = 4
		Float TotalWeightAccumulator; //offset = 8, size = 4
		Bool bRelevant: 1; //offset = 12, size = 4
		Bool bBioNeedTickingCompleteCall: 1; //offset = 12, size = 4
		Bool bSkipTickWhenZeroWeight: 1; //offset = 12, size = 4
		Bool bTickDuringPausedAnims: 1; //offset = 12, size = 4
	};

	class SkeletalMeshComponent: public MeshComponent
	{
		DECLARE_PACKAGE_CLASS( SkeletalMeshComponent, MeshComponent, Engine )

	public:

		SkeletalMesh* SkeletalMesh; //offset = 488, size = 4
		SkeletalMeshComponent* AttachedToSkelComponent; //offset = 492, size = 4
		AnimTree* AnimTreeTemplate; //offset = 496, size = 4
		AnimNode* Animations; //offset = 500, size = 4
		Array<AnimTickEntry> AnimTickArray; //offset = 504, size = 12
		PhysicsAsset* PhysicsAsset; //offset = 516, size = 4
		PhysicsAssetInstance* PhysicsAssetInstance; //offset = 520, size = 4
		Float PhysicsWeight; //offset = 524, size = 4
		Float GlobalAnimRateScale; //offset = 528, size = 4
		Pointer MeshObject; //offset = 532, size = 4
		Color WireframeColor; //offset = 536, size = 4
		Array<Matrix> SpaceBases; //offset = 540, size = 12
		Array<BoneAtom> LocalAtoms; //offset = 552, size = 12
		Array<Byte> RequiredBones; //offset = 564, size = 12
		SkeletalMeshComponent* ParentAnimComponent; //offset = 576, size = 4
		Array<Int> ParentBoneMap; //offset = 580, size = 12
		Array<AnimSet*> AnimSets; //offset = 592, size = 12
		Array<AnimSet*> TemporarySavedAnimSets; //offset = 604, size = 12
		Array<MorphTargetSet*> MorphSets; //offset = 616, size = 12
		Array<ActiveMorph> ActiveMorphs; //offset = 628, size = 12
		Array<Attachment> Attachments; //offset = 640, size = 12
		Array<Byte> SkelControlIndex; //offset = 652, size = 12
		Int ForcedLodModel; //offset = 664, size = 4
		Int PredictedLODLevel; //offset = 668, size = 4
		Int OldPredictedLODLevel; //offset = 672, size = 4
		Float MaxDistanceFactor; //offset = 676, size = 4
		Int bForceWireframe; //offset = 680, size = 4
		Int bForceRefpose; //offset = 684, size = 4
		Int bOldForceRefPose; //offset = 688, size = 4
		Int bNoSkeletonUpdate; //offset = 692, size = 4
		Int bDisplayBones; //offset = 696, size = 4
		Int bShowPrePhysBones; //offset = 700, size = 4
		Int bHideSkin; //offset = 704, size = 4
		Int bForceRawOffset; //offset = 708, size = 4
		Int bIgnoreControllers; //offset = 712, size = 4
		Int bTransformFromAnimParent; //offset = 716, size = 4
		Int TickTag; //offset = 720, size = 4
		Int CachedAtomsTag; //offset = 724, size = 4
		Int bUseSingleBodyPhysics; //offset = 728, size = 4
		Int bRequiredBonesUpToDate; //offset = 732, size = 4
		Float MinDistFactorForKinematicUpdate; //offset = 736, size = 4
		Name PhysicsBlendZeroDriftBoneName; //offset = 740, size = 8
		Int FramesPhysicsAsleep; //offset = 748, size = 4
		Bool bSkipAllUpdateWhenPhysicsAsleep: 1; //offset = 752, size = 4
		Bool bUpdateSkelWhenNotRendered: 1; //offset = 752, size = 4
		Bool bIgnoreControllersWhenNotRendered: 1; //offset = 752, size = 4
		Bool bNotUpdatingKinematicDueToDistance: 1; //offset = 752, size = 4
		Bool bForceDiscardRootMotion: 1; //offset = 752, size = 4
		Bool bRootMotionModeChangeNotify: 1; //offset = 752, size = 4
		Bool bRootMotionExtractedNotify: 1; //offset = 752, size = 4
		Bool bDisableFaceFXMaterialInstanceCreation: 1; //offset = 752, size = 4
		Bool bAnimTreeInitialised: 1; //offset = 752, size = 4
		Bool bAnimSetUpdated: 1; //offset = 752, size = 4
		Bool bHasPhysicsAssetInstance: 1; //offset = 752, size = 4
		Bool bUpdateKinematicBonesFromAnimation: 1; //offset = 752, size = 4
		Bool bUpdateJointsFromAnimation: 1; //offset = 752, size = 4
		Bool bSkelCompFixed: 1; //offset = 752, size = 4
		Bool bHasHadPhysicsBlendedIn: 1; //offset = 752, size = 4
		Bool bForceUpdateAttachmentsInTick: 1; //offset = 752, size = 4
		Bool bEnableFullAnimWeightBodies: 1; //offset = 752, size = 4
		Bool bPerBoneVolumeEffects: 1; //offset = 752, size = 4
		Bool bSyncActorLocationToRootRigidBody: 1; //offset = 752, size = 4
		Bool bUseRawData: 1; //offset = 752, size = 4
		Bool bDisableWarningWhenAnimNotFound: 1; //offset = 752, size = 4
		Bool bOverrideAttachmentOwnerVisibility: 1; //offset = 752, size = 4
		Bool bPauseAnims: 1; //offset = 752, size = 4
		Bool bChartDistanceFactor: 1; //offset = 752, size = 4
		Bool bIsFrozen: 1; //offset = 752, size = 4
		Bool bFrozenMeshProcessed: 1; //offset = 752, size = 4
		Bool bMeshShouldBeFrozen: 1; //offset = 752, size = 4
		Bool bEnableClothSimulation: 1; //offset = 752, size = 4
		Bool bDisableClothCollision: 1; //offset = 752, size = 4
		Bool bClothFrozen: 1; //offset = 752, size = 4
		Bool bAutoFreezeClothWhenNotRendered: 1; //offset = 752, size = 4
		Bool bClothBaseVelClamp: 1; //offset = 752, size = 4
		Bool bAttachClothVertsToBaseBody: 1; //offset = 756, size = 4
		Bool bCacheAnimSequenceNodes: 1; //offset = 756, size = 4
		Bool bForceMeshObjectUpdates: 1; //offset = 756, size = 4
		Vector ClothExternalForce; //offset = 760, size = 12
		Vector ClothWind; //offset = 772, size = 12
		Vector ClothBaseVelClampRange; //offset = 784, size = 12
		Float ClothBlendWeight; //offset = 796, size = 4
		Pointer ClothSim; //offset = 800, size = 4
		Int SceneIndex; //offset = 804, size = 4
		Array<Vector> ClothMeshPosData; //offset = 808, size = 12
		Array<Vector> ClothMeshNormalData; //offset = 820, size = 12
		Array<Int> ClothMeshIndexData; //offset = 832, size = 12
		Int NumClothMeshVerts; //offset = 844, size = 4
		Int NumClothMeshIndices; //offset = 848, size = 4
		Array<Int> ClothMeshParentData; //offset = 852, size = 12
		Int NumClothMeshParentIndices; //offset = 864, size = 4
		Array<Vector> ClothMeshWeldedPosData; //offset = 868, size = 12
		Array<Vector> ClothMeshWeldedNormalData; //offset = 880, size = 12
		Array<Int> ClothMeshWeldedIndexData; //offset = 892, size = 12
		Int ClothDirtyBufferFlag; //offset = 904, size = 4
		Byte ClothRBChannel; //offset = 908, size = 1
		RBCollisionChannelContainer ClothRBCollideWithChannels; //offset = 912, size = 4
		Float ClothForceScale; //offset = 916, size = 4
		Float ClothAttachmentTearFactor; //offset = 920, size = 4
		Material* LimitMaterial; //offset = 924, size = 4
		BoneAtom RootMotionDelta; //offset = 928, size = 32
		Vector RootMotionVelocity; //offset = 960, size = 12
		Vector RootBoneTranslation; //offset = 972, size = 12
		Vector RootMotionAccelScale; //offset = 984, size = 12
		Byte RootMotionMode; //offset = 996, size = 1
		Byte PreviousRMM; //offset = 997, size = 1
		Byte PendingRMM; //offset = 998, size = 1
		Byte OldPendingRMM; //offset = 999, size = 1
		Int bRMMOneFrameDelay; //offset = 1000, size = 4
		Byte RootMotionRotationMode; //offset = 1004, size = 1
		Byte FaceFXBlendMode; //offset = 1005, size = 1
		Array<FaceMorphData> m_SkelMorphTargets; //offset = 1008, size = 12
		Bool m_bUpdateTSB: 1; //offset = 1020, size = 4
		Pointer FaceFXActorInstance; //offset = 1024, size = 4
		Int bFaceFXDisabled; //offset = 1028, size = 4
		Float FaceFXTimer; //offset = 1032, size = 4
		Int bFaceFXOpenInMatinee; //offset = 1036, size = 4
		Array<BoneAtom> FaceBlendAtoms; //offset = 1040, size = 12
		Array<Float> MaterialBlendValues; //offset = 1052, size = 12
		Int bDoClipToClipBlend; //offset = 1064, size = 4
		Float FaceBlendTimer; //offset = 1068, size = 4
		Float FaceBlendSpeed; //offset = 1072, size = 4
		Float FaceBlendInterpolator; //offset = 1076, size = 4
		Bool bOverrideParentSkeleton: 1; //offset = 1080, size = 4
		Name nmOverrideStartBoneName; //offset = 1084, size = 8
		Array<BoneOverrideInfo> OverrideBones; //offset = 1092, size = 12
		Int MinAutoLODLevel; //offset = 1104, size = 4
		AudioComponent* CachedFaceFXAudioComp; //offset = 1108, size = 4
		Array<Byte> BoneVisibility; //offset = 1112, size = 12
		Int WwiseFaceFXAudioInstanceID; //offset = 1124, size = 4
		Array<BoneDrivenMaterialParameter> BoneMaterialDrivers; //offset = 1128, size = 12
		Bool m_bBioAreRigidBodiesAwake: 1; //offset = 1140, size = 4
		Pointer AsyncSkeletalLock; //offset = 1144, size = 4
		Matrix RootBodyOffsetInvTM; //offset = 1152, size = 64
		Bool m_bStopFaceFXAnim: 1; //offset = 1216, size = 4

		void StopAnim( AnimNodeSequence* AnimNode );
		void PlayAnim( Name AnimName, Float Duration, Bool bLoop, Bool bRestartIfAlreadyPlaying, AnimNodeSequence* AnimNode, Float DesiredRate );
		void BioEnableFaceFX( Bool bEnable );
		Bool IsFrozen();
		Bool IsBoneHidden( Int BoneIndex );
		void UnHideBone( Int BoneIndex );
		void HideBone( Int BoneIndex, Bool bTermBodiesBelow );
		void SetFaceFXRegisterEx( String RegName, Byte RegOp, Float FirstValue, Float FirstInterpDuration, Float NextValue, Float NextInterpDuration );
		void SetFaceFXRegister( String RegName, Float RegVal, Byte RegOp, Float InterpDuration );
		Float GetFaceFXRegister( String RegName );
		void DeclareFaceFXRegister( String RegName );
		Bool IsPlayingFaceFXAnim();
		void StopFaceFXAnim( Bool bBioRampDown );
		Bool PlayFaceFXAnim( FaceFXAnimSet* FaceFXAnimSetRef, String AnimName, String GroupName );
		Bool GetBonesWithinRadius( Vector Origin, Float Radius, Int TraceFlags, Array<Name> out_Bones );
		void UpdateAnimations();
		void ForceSkelUpdate();
		void UpdateRBBonesFromSpaceBases( Bool bMoveUnfixedBodies, Bool bTeleport );
		void SetHasPhysicsAssetInstance( Bool bHasInstance );
		RB_BodyInstance* FindBodyInstanceNamed( Name BoneName );
		Name FindConstraintBoneName( Int ConstraintIndex );
		Int FindConstraintIndex( Name ConstraintName );
		void InitSkelControls();
		void UpdateParentBoneMap();
		void SetParentAnimComponent( SkeletalMeshComponent* NewParentAnimComp );
		void SetAnimTreeTemplate( AnimTree* NewTemplate );
		void BioFindClosestBones( Vector vTestLocation, Array<Name> BoneNames, Float fRadius, Bool bOutsideRadius );
		Name FindClosestBone( Vector TestLocation, Vector BoneLocation, Float IgnoreScale );
		void TransformFromBoneSpace( Name BoneName, Vector InPosition, Rotator InRotation, Vector OutPosition, Rotator OutRotation );
		void TransformToBoneSpace( Name BoneName, Vector InPosition, Rotator InRotation, Vector OutPosition, Rotator OutRotation );
		Vector GetBoneAxis( Name BoneName, Byte Axis );
		void GetBoneNames( Array<Name> BoneNames );
		Int GetParentBoneIndex( Int BoneIndex );
		Name GetParentBone( Name BoneName );
		Matrix GetBoneMatrix( Int BoneIndex );
		Int MatchRefBone( Name BoneName );
		Vector GetBoneLocation( Name BoneName, Int Space );
		Quat GetBoneQuaternion( Name BoneName, Int Space );
		MorphNodeBase* FindMorphNode( Name InNodeName );
		SkelControlBase* FindSkelControl( Name InControlName );
		void AllAnimNodes( Class* BaseClass, AnimNode* Node );
		AnimNode* FindAnimNode( Name InNodeName );
		MorphTarget* FindMorphTarget( Name MorphTargetName );
		Float GetAnimLength( Name AnimSeqName, AnimSequence* AnimSeq );
		Float GetAnimRateByDuration( Name AnimSeqName, Float Duration, AnimSequence* AnimSeq );
		void RestoreSavedAnimSets();
		void SaveAnimSets();
		String BioGetDetails();
		AnimSequence* FindAnimSequence( Name AnimSeqName );
		void SetClothValidBounds( Vector ClothValidBoundsMin, Vector ClothValidBoundsMax );
		void EnableClothValidBounds( Bool IfEnableClothValidBounds );
		void AttachClothToCollidingShapes( Bool AttatchTwoWay, Bool AttachTearable );
		void SetClothVelocity( Vector VelocityOffSet );
		void SetClothPosition( Vector ClothOffSet );
		void SetClothSleep( Bool IfClothSleep );
		void SetClothThickness( Float ClothThickness );
		void SetClothTearFactor( Float ClothTearFactor );
		void SetClothStretchingStiffness( Float ClothStretchingStiffness );
		void SetClothSolverIterations( Int ClothSolverIterations );
		void SetClothSleepLinearVelocity( Float ClothSleepLinearVelocity );
		void SetClothPressure( Float ClothPressure );
		void SetClothFriction( Float ClothFriction );
		void SetClothFlags( Int ClothFlags );
		void SetClothDampingCoefficient( Float ClothDampingCoefficient );
		void SetClothCollisionResponseCoefficient( Float ClothCollisionResponseCoefficient );
		void SetClothBendingStiffness( Float ClothBendingStiffness );
		void SetClothAttachmentTearFactor( Float ClothAttachTearFactor );
		void SetClothAttachmentResponseCoefficient( Float ClothAttachmentResponseCoefficient );
		Float GetClothThickness();
		Float GetClothTearFactor();
		Float GetClothStretchingStiffness();
		Int GetClothSolverIterations();
		Float GetClothSleepLinearVelocity();
		Float GetClothPressure();
		Float GetClothFriction();
		Int GetClothFlags();
		Float GetClothDampingCoefficient();
		Float GetClothCollisionResponseCoefficient();
		Float GetClothBendingStiffness();
		Float GetClothAttachmentTearFactor();
		Float GetClothAttachmentResponseCoefficient();
		void ResetClothVertsToRefPose();
		void SetAttachClothVertsToBaseBody( Bool bAttachVerts );
		void SetClothExternalForce( Vector InForce );
		void UpdateClothParams();
		void SetClothFrozen( Bool bNewFrozen );
		void SetEnableClothSimulation( Bool bInEnable );
		void SetForceRefPose( Bool bNewForceRefPose );
		void SetPhysicsAsset( PhysicsAsset* NewPhysicsAsset, Bool bForceReInit );
		void SetSkeletalMesh( SkeletalMesh* NewMesh, Bool bKeepSpaceBases );
		Bool BioComputeAttachedComponentPositionRotation( ActorComponent* Component, Vector Position, Rotator Orientation, Name BoneName );
		void AttachedComponents( Class* BaseClass, ActorComponent* OutComponent );
		Bool IsComponentAttached( ActorComponent* Component, Name BoneName );
		ActorComponent* FindComponentAttachedToBone( Name InBoneName );
		SkeletalMeshSocket* GetSocketByName( Name InSocketName );
		Bool GetSocketWorldLocationAndRotation( Name InSocketName, Vector OutLocation, Rotator OutRotation );
		void AttachComponentToSocket( ActorComponent* Component, Name SocketName );
		void DetachComponent( ActorComponent* Component );
		void AttachComponent( ActorComponent* Component, Name BoneName, Vector RelativeLocation, Rotator RelativeRotation, Vector RelativeScale );
	};

	class SkeletalMeshSocket: public Object
	{
		DECLARE_PACKAGE_CLASS( SkeletalMeshSocket, Object, Engine )

	public:

		Name SocketName; //offset = 60, size = 8
		Name BoneName; //offset = 68, size = 8
		Vector RelativeLocation; //offset = 76, size = 12
		Rotator RelativeRotation; //offset = 88, size = 12
		Vector RelativeScale; //offset = 100, size = 12
		SkeletalMesh* PreviewSkelMesh; //offset = 112, size = 4
		SkeletalMeshComponent* PreviewSkelComp; //offset = 116, size = 4
		StaticMesh* PreviewStaticMesh; //offset = 120, size = 4
		Name SupermodelName; //offset = 124, size = 8
	};

	class SkyLight: public Light
	{
		DECLARE_PACKAGE_CLASS( SkyLight, Light, Engine )

	public:
	};

	class SkyLightComponent: public LightComponent
	{
		DECLARE_PACKAGE_CLASS( SkyLightComponent, LightComponent, Engine )

	public:

		Float LowerBrightness; //offset = 384, size = 4
		Color LowerColor; //offset = 388, size = 4
	};

	class SkyLightToggleable: public SkyLight
	{
		DECLARE_PACKAGE_CLASS( SkyLightToggleable, SkyLight, Engine )

	public:
	};

	class SlotToSlotReachSpec: public ForcedReachSpec
	{
		DECLARE_PACKAGE_CLASS( SlotToSlotReachSpec, ForcedReachSpec, Engine )

	public:

		Byte SpecDirection; //offset = 148, size = 1
	};

	class SmokeTestCommandlet: public Commandlet
	{
		DECLARE_PACKAGE_CLASS( SmokeTestCommandlet, Commandlet, Engine )

	public:
	};

	class WwiseBaseSoundObject: public Object
	{
		DECLARE_PACKAGE_CLASS( WwiseBaseSoundObject, Object, Engine )

	public:
	};

	struct SoundEntityVariable
	{
		Bool bIsDirty: 1; //offset = 0, size = 4
		String VariableName; //offset = 4, size = 12
		String VariableState; //offset = 16, size = 12
		Array<String> ValidVariableStates; //offset = 28, size = 12
	};

	class SoundNode: public Object
	{
		DECLARE_PACKAGE_CLASS( SoundNode, Object, Engine )

	public:

		Array<SoundEntityVariable> SoundEntityVariablesGlobal; //offset = 60, size = 12
		Array<SoundEntityVariable> SoundEntityVariablesLocal; //offset = 72, size = 12
		Int NodeUpdateHint; //offset = 84, size = 4
		Array<SoundNode*> ChildNodes; //offset = 88, size = 12
	};

	struct SoundNodeEditorData
	{
		Int NodePosX; //offset = 0, size = 4
		Int NodePosY; //offset = 4, size = 4
	};

	class SoundCue: public WwiseBaseSoundObject
	{
		DECLARE_PACKAGE_CLASS( SoundCue, WwiseBaseSoundObject, Engine )

	public:

		Name SoundGroup; //offset = 60, size = 8
		SoundNodeAttenuation* SoundEntityNode; //offset = 68, size = 4
		SoundNode* FirstNode; //offset = 72, size = 4
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> EditorData; //offset = 76, size = 20
		Float MaxAudibleDistance; //offset = 96, size = 4
		Float VolumeMultiplier; //offset = 100, size = 4
		Float PitchMultiplier; //offset = 104, size = 4
		Float Duration; //offset = 108, size = 4
		FaceFXAnimSet* FaceFXAnimSetRef; //offset = 112, size = 4
		String FaceFXGroupName; //offset = 116, size = 12
		String FaceFXAnimName; //offset = 128, size = 12
		Int MaxConcurrentPlayCount; //offset = 140, size = 4
		Int CurrentPlayCount; //offset = 144, size = 4

		Float GetCueDuration();
	};

	class SoundNodeWaveParam: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeWaveParam, SoundNode, Engine )

	public:

		Name WaveParameterName; //offset = 100, size = 8
	};

	struct RecogUserData
	{
		Int ActiveVocabularies; //offset = 0, size = 4
		Array<Byte> UserData; //offset = 4, size = 12
	};

	struct RecognisableWord
	{
		Int Id; //offset = 0, size = 4
		String ReferenceWord; //offset = 4, size = 12
		String PhoneticWord; //offset = 16, size = 12
	};

	struct RecogVocabulary
	{
		Array<RecognisableWord> WhoDictionary; //offset = 0, size = 12
		Array<RecognisableWord> WhatDictionary; //offset = 12, size = 12
		Array<RecognisableWord> WhereDictionary; //offset = 24, size = 12
		String VocabName; //offset = 36, size = 12
		Array<Byte> VocabData; //offset = 48, size = 12
		Array<Byte> WorkingVocabData; //offset = 60, size = 12
	};

	class SpeechRecognition: public Object
	{
		DECLARE_PACKAGE_CLASS( SpeechRecognition, Object, Engine )

	public:

		String Language; //offset = 60, size = 12
		Float ConfidenceThreshhold; //offset = 72, size = 4
		Array<RecogVocabulary> Vocabularies; //offset = 76, size = 12
		Array<Byte> VoiceData; //offset = 88, size = 12
		Array<Byte> WorkingVoiceData; //offset = 100, size = 12
		Array<Byte> UserData; //offset = 112, size = 12
		RecogUserData InstanceData[4]; //offset = 124, size = 16
		Bool bDirty: 1; //offset = 188, size = 4
		Bool bInitialised: 1; //offset = 188, size = 4
		Pointer FnxVoiceData; //offset = 192, size = 4
	};

	class SphericalHarmonicLightComponent: public LightComponent
	{
		DECLARE_PACKAGE_CLASS( SphericalHarmonicLightComponent, LightComponent, Engine )

	public:

		SHVectorRGB WorldSpaceIncidentLighting; //offset = 384, size = 108
		Bool bRenderBeforeModShadows: 1; //offset = 492, size = 4
	};

	class SpotLight: public Light
	{
		DECLARE_PACKAGE_CLASS( SpotLight, Light, Engine )

	public:
	};

	class SpotLightComponent: public PointLightComponent
	{
		DECLARE_PACKAGE_CLASS( SpotLightComponent, PointLightComponent, Engine )

	public:

		Float InnerConeAngle; //offset = 500, size = 4
		Float OuterConeAngle; //offset = 504, size = 4
		DrawLightConeComponent* PreviewInnerCone; //offset = 508, size = 4
		DrawLightConeComponent* PreviewOuterCone; //offset = 512, size = 4
	};

	class SpotLightMovable: public SpotLight
	{
		DECLARE_PACKAGE_CLASS( SpotLightMovable, SpotLight, Engine )

	public:
	};

	class SpotLightToggleable: public SpotLight
	{
		DECLARE_PACKAGE_CLASS( SpotLightToggleable, SpotLight, Engine )

	public:
	};

	class SpriteComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( SpriteComponent, PrimitiveComponent, Engine )

	public:

		Texture2D* Sprite; //offset = 448, size = 4
		Bool bIsScreenSizeScaled: 1; //offset = 452, size = 4
		Float ScreenSize; //offset = 456, size = 4
	};

	class StaticLightCollectionActor: public Light
	{
		DECLARE_PACKAGE_CLASS( StaticLightCollectionActor, Light, Engine )

	public:

		Array<LightComponent*> LightComponents; //offset = 516, size = 12
		Int MaxLightComponents; //offset = 528, size = 4
	};

	enum ESleepFamily
	{
		SF_Normal,
		SF_Sensitive,
	};

	enum EBioPartGroup
	{
		BIOPARTGROUP_NONE,
		BIOPARTGROUP_INHERIT_FROM_PARENT,
		BIOPARTGROUP_HEAD,
		BIOPARTGROUP_LEFT_LEG,
		BIOPARTGROUP_RIGHT_LEG,
	};

	struct KCachedConvexDataElement
	{
		Array<Byte> ConvexElementData; //offset = 0, size = 12
	};

	struct KCachedConvexData
	{
		Array<KCachedConvexDataElement> CachedConvexElements; //offset = 0, size = 12
	};

	class RB_BodySetup: public KMeshProps
	{
		DECLARE_PACKAGE_CLASS( RB_BodySetup, KMeshProps, Engine )

	public:

		Byte ePartGroup; //offset = 124, size = 1
		Byte SleepFamily; //offset = 125, size = 1
		Bool bDetachable: 1; //offset = 128, size = 4
		Bool bPartBasedDamageEnabled: 1; //offset = 128, size = 4
		Bool bFixed: 1; //offset = 128, size = 4
		Bool bNoCollision: 1; //offset = 128, size = 4
		Bool bBlockZeroExtent: 1; //offset = 128, size = 4
		Bool bBlockNonZeroExtent: 1; //offset = 128, size = 4
		Bool bEnableContinuousCollisionDetection: 1; //offset = 128, size = 4
		Bool bAlwaysFullAnimWeight: 1; //offset = 128, size = 4
		Float fDetachHPThresholdPercent; //offset = 132, size = 4
		Float fDetachHPPercent; //offset = 136, size = 4
		Float fDamageScale; //offset = 140, size = 4
		Name MaterialParamName; //offset = 144, size = 8
		Name BoneName; //offset = 152, size = 8
		PhysicalMaterial* PhysMaterial; //offset = 160, size = 4
		Float MassScale; //offset = 164, size = 4
		Array<Pointer> CollisionGeom; //offset = 168, size = 12
		Array<Vector> CollisionGeomScale3D; //offset = 180, size = 12
		Array<Vector> PreCachedPhysScale; //offset = 192, size = 12
		Array<KCachedConvexData> PreCachedPhysData; //offset = 204, size = 12
		Int PreCachedPhysDataVersion; //offset = 216, size = 4
	};

	class StaticMesh: public Object
	{
		DECLARE_PACKAGE_CLASS( StaticMesh, Object, Engine )

	public:

		RB_BodySetup* BodySetup; //offset = 140, size = 4
		Array<StaticMeshLODInfo> LODInfo; //offset = 72, size = 12
		Float LODDistanceRatio; //offset = 84, size = 4
		Int LightMapCoordinateIndex; //offset = 112, size = 4
		Int LightMapResolution; //offset = 108, size = 4
		Bool UseFullPrecisionUVs: 1; //offset = 212, size = 4
		Bool ForceDoubleSidedShadowVolumes: 1; //offset = 208, size = 4
		Bool UseSimpleRigidBodyCollision: 1; //offset = 204, size = 4
		Bool UseSimpleBoxCollision: 1; //offset = 200, size = 4
		Bool UseSimpleLineCollision: 1; //offset = 196, size = 4
	};

	class StaticMeshActorBase: public Actor
	{
		DECLARE_PACKAGE_CLASS( StaticMeshActorBase, Actor, Engine )

	public:
	};

	struct StaticMeshComponentLODInfo
	{
		Array<ShadowMap2D*> ShadowMaps; //offset = 0, size = 12
		Array<Object*> ShadowVertexBuffers; //offset = 12, size = 12
		Pointer LightMap; //offset = 24, size = 4
	};

	class StaticMeshComponent: public MeshComponent
	{
		DECLARE_PACKAGE_CLASS( StaticMeshComponent, MeshComponent, Engine )

	public:

		Int ForcedLodModel; //offset = 488, size = 4
		Int PreviousLODLevel; //offset = 492, size = 4
		StaticMesh* StaticMesh; //offset = 496, size = 4
		Color WireframeColor; //offset = 500, size = 4
		Bool bIgnoreInstanceForTextureStreaming: 1; //offset = 504, size = 4
		Bool bOverrideLightMapResolution: 1; //offset = 504, size = 4
		Int OverriddenLightMapResolution; //offset = 508, size = 4
		Bool OverridePhysMat: 1; //offset = 512, size = 4
		Float AudioObstruction; //offset = 516, size = 4
		Float AudioOcclusion; //offset = 520, size = 4
		Int SubDivisionStepSize; //offset = 524, size = 4
		Int MinSubDivisions; //offset = 528, size = 4
		Int MaxSubDivisions; //offset = 532, size = 4
		Bool bUseSubDivisions: 1; //offset = 536, size = 4
		Array<Guid> IrrelevantLights; //offset = 540, size = 12
		Array<StaticMeshComponentLODInfo> LODData; //offset = 552, size = 12

		void SetStaticMesh( StaticMesh* NewMesh );
	};

	class StaticMeshActor: public StaticMeshActorBase
	{
		DECLARE_PACKAGE_CLASS( StaticMeshActor, StaticMeshActorBase, Engine )

	public:

		StaticMeshComponent* StaticMeshComponent; //offset = 508, size = 4
		AudioComponent* oAudioComponent; //offset = 512, size = 4

		void PreBeginPlay();
	};

	class StaticMeshCollectionActor: public StaticMeshActorBase
	{
		DECLARE_PACKAGE_CLASS( StaticMeshCollectionActor, StaticMeshActorBase, Engine )

	public:

		Array<StaticMeshComponent*> StaticMeshComponents; //offset = 508, size = 12
		Int MaxStaticMeshComponents; //offset = 520, size = 4
	};

	class StaticMeshComponentFactory: public MeshComponentFactory
	{
		DECLARE_PACKAGE_CLASS( StaticMeshComponentFactory, MeshComponentFactory, Engine )

	public:

		StaticMesh* StaticMesh; //offset = 76, size = 4
	};

	class SwatTurnReachSpec: public ForcedReachSpec
	{
		DECLARE_PACKAGE_CLASS( SwatTurnReachSpec, ForcedReachSpec, Engine )

	public:

		Byte SpecDirection; //offset = 148, size = 1
	};

	class TeamInfo: public ReplicationInfo
	{
		DECLARE_PACKAGE_CLASS( TeamInfo, ReplicationInfo, Engine )

	public:

		String TeamName; //offset = 508, size = 12
		Int Size; //offset = 520, size = 4
		Float Score; //offset = 524, size = 4
		Int TeamIndex; //offset = 528, size = 4
		Color TeamColor; //offset = 532, size = 4

		Byte GetTeamNum();
		Color GetTextColor();
		Color GetHUDColor();
		String GetHumanReadableName();
		void RemoveFromTeam( Controller* Other );
		Bool AddToTeam( Controller* Other, Controller* P, Bool bSuccess );
		void Destroyed( TeamInfo* OtherTeam );
		void ReplicatedEvent( Name VarName );
	};

	class Teleporter: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( Teleporter, NavigationPoint, Engine )

	public:

		String URL; //offset = 776, size = 12
		Name ProductRequired; //offset = 788, size = 8
		Bool bChangesVelocity: 1; //offset = 796, size = 4
		Bool bChangesYaw: 1; //offset = 796, size = 4
		Bool bReversesX: 1; //offset = 796, size = 4
		Bool bReversesY: 1; //offset = 796, size = 4
		Bool bReversesZ: 1; //offset = 796, size = 4
		Bool bEnabled: 1; //offset = 796, size = 4
		Bool bCanTeleportVehicles: 1; //offset = 796, size = 4
		Vector TargetVelocity; //offset = 800, size = 12
		Float LastFired; //offset = 812, size = 4

		Actor* SpecialHandling( Pawn* Other );
		void PostTouch( Actor* Other, Teleporter* D, Teleporter* Dest, Int I );
		void Touch( Actor* Other, PrimitiveComponent* OtherComp, Vector HitLocation, Vector HitNormal );
		Bool Accept( Actor* Incoming, Actor* Source, Rotator NewRot, Rotator oldRot, Float mag, Vector oldDir, Controller* C );
		void PostBeginPlay();
		Bool CanTeleport( Actor* A );
	};

	class TeleportReachSpec: public ReachSpec
	{
		DECLARE_PACKAGE_CLASS( TeleportReachSpec, ReachSpec, Engine )

	public:
	};

	struct SourceTexture2DRegion
	{
		Int OffsetX; //offset = 0, size = 4
		Int OffsetY; //offset = 4, size = 4
		Int SizeX; //offset = 8, size = 4
		Int SizeY; //offset = 12, size = 4
		Texture2D* Texture2D; //offset = 16, size = 4
	};

	class Texture2DComposite: public Texture
	{
		DECLARE_PACKAGE_CLASS( Texture2DComposite, Texture, Engine )

	public:

		Array<SourceTexture2DRegion> SourceRegions; //offset = 192, size = 12
		Int MaxTextureSize; //offset = 204, size = 4

		void ResetSourceRegions();
		void UpdateCompositeTexture( Int NumMipsToGenerate );
		Bool SourceTexturesFullyStreamedIn();
	};

	class TextureCube: public Texture
	{
		DECLARE_PACKAGE_CLASS( TextureCube, Texture, Engine )

	public:

		Int SizeX; //offset = 192, size = 4
		Int SizeY; //offset = 196, size = 4
		Byte Format; //offset = 200, size = 1
		Int NumMips; //offset = 204, size = 4
		Bool bIsCubemapValid: 1; //offset = 208, size = 4
		Texture2D* FacePosX; //offset = 212, size = 4
		Texture2D* FaceNegX; //offset = 216, size = 4
		Texture2D* FacePosY; //offset = 220, size = 4
		Texture2D* FaceNegY; //offset = 224, size = 4
		Texture2D* FacePosZ; //offset = 228, size = 4
		Texture2D* FaceNegZ; //offset = 232, size = 4
	};

	enum TextureFlipBookMethod
	{
		TFBM_UL_ROW,
		TFBM_UL_COL,
		TFBM_UR_ROW,
		TFBM_UR_COL,
		TFBM_LL_ROW,
	};

	class TextureFlipBook: public Texture2D
	{
		DECLARE_PACKAGE_CLASS( TextureFlipBook, Texture2D, Engine )

	public:

		Pointer VfTable_FTickableObject; //offset = 328, size = 4
		Float TimeIntoMovie; //offset = 332, size = 4
		Float TimeSinceLastFrame; //offset = 336, size = 4
		Float HorizontalScale; //offset = 340, size = 4
		Float VerticalScale; //offset = 344, size = 4
		Bool bPaused: 1; //offset = 348, size = 4
		Bool bStopped: 1; //offset = 348, size = 4
		Bool bLooping: 1; //offset = 348, size = 4
		Bool bAutoPlay: 1; //offset = 348, size = 4
		Int HorizontalImages; //offset = 352, size = 4
		Int VerticalImages; //offset = 356, size = 4
		Byte FBMethod; //offset = 360, size = 1
		Float FrameRate; //offset = 364, size = 4
		Float FrameTime; //offset = 368, size = 4
		Int CurrentRow; //offset = 372, size = 4
		Int CurrentColumn; //offset = 376, size = 4
		Float RenderOffsetU; //offset = 380, size = 4
		Float RenderOffsetV; //offset = 384, size = 4
		Pointer ReleaseResourcesFence; //offset = 388, size = 4

		void SetCurrentFrame( Int Row, Int Col );
		void Stop();
		void Pause();
		void Play();
	};

	enum EMovieStreamSource
	{
		MovieStream_File,
		MovieStream_Memory,
	};

	class TextureMovie: public Texture
	{
		DECLARE_PACKAGE_CLASS( TextureMovie, Texture, Engine )

	public:

		Int SizeX; //offset = 192, size = 4
		Int SizeY; //offset = 196, size = 4
		Byte Format; //offset = 200, size = 1
		Byte AddressX; //offset = 201, size = 1
		Byte AddressY; //offset = 202, size = 1
		Byte MovieStreamSource; //offset = 203, size = 1
		Class* DecoderClass; //offset = 204, size = 4
		CodecMovie* Decoder; //offset = 208, size = 4
		Bool Paused: 1; //offset = 212, size = 4
		Bool Stopped: 1; //offset = 212, size = 4
		Bool Looping: 1; //offset = 212, size = 4
		Bool AutoPlay: 1; //offset = 212, size = 4
		Bool m_bIsDroppingFrames: 1; //offset = 212, size = 4
		UntypedBulkData_Mirror Data; //offset = 216, size = 52
		Pointer ReleaseCodecFence; //offset = 268, size = 4

		void Stop();
		void Pause();
		void Play();
	};

	class TextureRenderTarget: public Texture
	{
		DECLARE_PACKAGE_CLASS( TextureRenderTarget, Texture, Engine )

	public:

		Bool bUpdateImmediate: 1; //offset = 192, size = 4
		Bool bNeedsTwoCopies: 1; //offset = 192, size = 4
		Bool bRenderOnce: 1; //offset = 192, size = 4
	};

	class TextureRenderTarget2D: public TextureRenderTarget
	{
		DECLARE_PACKAGE_CLASS( TextureRenderTarget2D, TextureRenderTarget, Engine )

	public:

		Int SizeX; //offset = 196, size = 4
		Int SizeY; //offset = 200, size = 4
		Byte Format; //offset = 204, size = 1
		Byte AddressX; //offset = 205, size = 1
		Byte AddressY; //offset = 206, size = 1
		LinearColor ClearColor; //offset = 208, size = 16

		TextureRenderTarget2D* Create( Int InSizeX, Int InSizeY, Byte InFormat, LinearColor InClearColor, Bool bOnlyRenderOnce );
	};

	class TextureRenderTargetCube: public TextureRenderTarget
	{
		DECLARE_PACKAGE_CLASS( TextureRenderTargetCube, TextureRenderTarget, Engine )

	public:

		Int SizeX; //offset = 196, size = 4
		Byte Format; //offset = 200, size = 1
	};

	struct CheckpointRecord
	{
		Bool bCollideActors: 1; //offset = 0, size = 4
	};

	class Trigger: public Actor
	{
		DECLARE_PACKAGE_CLASS( Trigger, Actor, Engine )

	public:

		CylinderComponent* CylinderComponent; //offset = 508, size = 4
		Bool bRecentlyTriggered: 1; //offset = 512, size = 4
		Float AITriggerDelay; //offset = 516, size = 4

		void ApplyCheckpointRecord( CheckpointRecord Record );
		void CreateCheckpointRecord( CheckpointRecord Record );
		Bool StopsProjectile( Projectile* P );
		void UnTrigger();
		void Touch( Actor* Other, PrimitiveComponent* OtherComp, Vector HitLocation, Vector HitNormal );
	};

	class TriggerVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( TriggerVolume, Volume, Engine )

	public:

		Bool StopsProjectile( Projectile* P );
		void PostBeginPlay();
	};

	class UberPostProcessEffect: public DOFAndBloomEffect
	{
		DECLARE_PACKAGE_CLASS( UberPostProcessEffect, DOFAndBloomEffect, Engine )

	public:

		Vector SceneShadows; //offset = 152, size = 12
		Vector SceneHighLights; //offset = 164, size = 12
		Vector SceneMidTones; //offset = 176, size = 12
		Float SceneDesaturation; //offset = 188, size = 4
		Bool EnableDOF: 1; //offset = 192, size = 4
		Bool EnableBloom: 1; //offset = 192, size = 4
		Bool EnableColorMapping: 1; //offset = 192, size = 4
		Bool EnableFilmic: 1; //offset = 192, size = 4
	};

	class Vehicle: public Pawn
	{
		DECLARE_PACKAGE_CLASS( Vehicle, Pawn, Engine )

	public:

		Pawn* Driver; //offset = 1052, size = 4
		Bool bDriving: 1; //offset = 1056, size = 4
		Bool bDriverIsVisible: 1; //offset = 1056, size = 4
		Bool bAttachDriver: 1; //offset = 1056, size = 4
		Bool bTurnInPlace: 1; //offset = 1056, size = 4
		Bool bSeparateTurretFocus: 1; //offset = 1056, size = 4
		Bool bFollowLookDir: 1; //offset = 1056, size = 4
		Bool bHasHandbrake: 1; //offset = 1056, size = 4
		Bool bScriptedRise: 1; //offset = 1056, size = 4
		Bool bAvoidReversing: 1; //offset = 1056, size = 4
		Bool bRetryPathfindingWithDriver: 1; //offset = 1056, size = 4
		Bool bIgnoreStallZ: 1; //offset = 1056, size = 4
		Bool bDoExtraNetRelevancyTraces: 1; //offset = 1056, size = 4
		Array<Vector> ExitPositions; //offset = 1060, size = 12
		Float ExitRadius; //offset = 1072, size = 4
		Vector ExitOffset; //offset = 1076, size = 12
		Float Steering; //offset = 1088, size = 4
		Float Throttle; //offset = 1092, size = 4
		Float Rise; //offset = 1096, size = 4
		Vector TargetLocationAdjustment; //offset = 1100, size = 12
		Float DriverDamageMult; //offset = 1112, size = 4
		Float MomentumMult; //offset = 1116, size = 4
		Class* CrushedDamageType; //offset = 1120, size = 4
		Float MinCrushSpeed; //offset = 1124, size = 4
		Float ForceCrushPenetration; //offset = 1128, size = 4
		Byte StuckCount; //offset = 1132, size = 1
		Float ThrottleTime; //offset = 1136, size = 4
		Float StuckTime; //offset = 1140, size = 4
		Float OldSteering; //offset = 1144, size = 4
		Float OnlySteeringStartTime; //offset = 1148, size = 4
		Float OldThrottle; //offset = 1152, size = 4
		Float AIMoveCheckTime; //offset = 1156, size = 4
		Float VehicleMovingTime; //offset = 1160, size = 4
		Float TurnTime; //offset = 1164, size = 4

		void NotifyDriverTakeHit( Controller* InstigatedBy, Vector HitLocation, Int Damage, Class* DamageType, Vector Momentum );
		void ReplicatedEvent( Name VarName );
		void DrivingStatusChanged();
		void HandleDeadVehicleDriver();
		void SetDriving( Bool B );
		Vector GetEntryLocation();
		void CrushedBy( Pawn* OtherPawn );
		Bool EncroachingOn( Actor* Other, Pawn* P, Vector PushVelocity, Vector CheckExtent, Bool bSlowEncroach, Bool bDeepEncroach );
		Controller* GetCollisionDamageInstigator();
		void EncroachedBy( Actor* Other );
		void FaceRotation( Rotator NewRotation, Float DeltaTime );
		Name GetDefaultCameraMode( PlayerController* RequestedBy );
		void PlayDying( Class* DamageType, Vector HitLoc );
		void DriverDied( Controller* C, PlayerReplicationInfo* RealPRI );
		Bool Died( Controller* Killer, Class* DamageType, Vector HitLocation );
		void ThrowActiveWeapon();
		void AdjustDriverDamage( Float Damage, Controller* InstigatedBy, Vector HitLocation, Vector Momentum, Class* DamageType );
		void TakeDamage( Float Damage, Controller* EventInstigator, Vector HitLocation, Vector Momentum, Class* DamageType, TraceHitInfo HitInfo, Actor* DamageCauser );
		Controller* SetKillInstigator( Controller* InstigatedBy, Class* DamageType );
		void UnPossessed();
		Bool TryExitPos( Pawn* ExitingDriver, Vector ExitPos, Bool bMustFindGround, Vector Slice, Vector HitLocation, Vector HitNormal, Vector StartLocation, Vector NewActorPos, Actor* HitActor );
		Bool FindAutoExit( Pawn* ExitingDriver, Vector FacingDir, Vector CrossProduct, Float PlaceDist );
		Bool PlaceExitingDriver( Pawn* ExitingDriver, Int I, Vector tryPlace, Vector Extent, Vector HitLocation, Vector HitNormal, Vector ZOffset );
		void DriverLeft();
		void SetInputs( Float InForward, Float InStrafe, Float InUp );
		Bool DriverLeave( Bool bForceLeave, Controller* C, PlayerController* PC, Rotator ExitRotation );
		Bool ContinueOnFoot();
		void DetachDriver( Pawn* P );
		void AttachDriver( Pawn* P );
		void EntryAnnouncement( Controller* C );
		void PossessedBy( Controller* C, Bool bVehicleTransition );
		Bool DriverEnter( Pawn* P, Controller* C );
		Bool TryToDrive( Pawn* P );
		Bool AnySeatAvailable();
		Bool CanEnterVehicle( Pawn* P );
		void Destroyed_HandleDriver( Pawn* OldDriver );
		void Destroyed();
		Bool CheatFly();
		Bool CheatGhost();
		Bool CheatWalk();
		void PostBeginPlay();
		void SetBaseEyeheight();
		void PlayerChangedTeam();
		void DriverRadiusDamage( Float DamageAmount, Float DamageRadius, Controller* EventInstigator, Class* DamageType, Float Momentum, Vector HitLocation, Actor* DamageCauser );
		void TakeRadiusDamage( Controller* InstigatedBy, Float BaseDamage, Float DamageRadius, Class* DamageType, Float Momentum, Vector HurtOrigin, Bool bFullDamage, Actor* DamageCauser );
		Vector GetTargetLocation( Actor* RequestedBy, Bool bRequestAlternateLoc );
		void Suicide();
		void DisplayDebug( HUD* HUD, Float out_YL, Float out_YPos, String DriverText );
		void NotifyTeamChanged();
	};

	class VoiceChannel: public Channel
	{
		DECLARE_PACKAGE_CLASS( VoiceChannel, Channel, Engine )

	public:
	};

	class VolumePathNode: public PathNode
	{
		DECLARE_PACKAGE_CLASS( VolumePathNode, PathNode, Engine )

	public:

		Float StartingRadius; //offset = 776, size = 4
		Float StartingHeight; //offset = 780, size = 4
		Bool bManualSizing: 1; //offset = 784, size = 4
	};

	class WallTransReachSpec: public ForcedReachSpec
	{
		DECLARE_PACKAGE_CLASS( WallTransReachSpec, ForcedReachSpec, Engine )

	public:
	};

	enum EWeaponFireType
	{
		EWFT_InstantHit,
		EWFT_Projectile,
		EWFT_Custom,
	};


	class Weapon: public Inventory
	{
		DECLARE_PACKAGE_CLASS( Weapon, Inventory, Engine )

	public:
		struct PendingClientWeaponSet
		{
			/*
			EndState
			BeginState
			PendingWeaponSetTimer
			*/
		};

		struct WeaponPuttingDown
		{
			/*
			EndState
			TryPutDown
			WeaponIsDown
			BeginState
			*/
		};

		struct WeaponEquipping
		{
			/*
			WeaponEquipped
			EndState
			Activate
			BeginState
			*/
		};

		struct WeaponFiring
		{
			/*
			EndState
			BeginState
			RefireCheckTimer
			IsFiring
			*/
		};

		struct Active
		{
			/*
			TryPutDown
			Activate
			ReadyToFire
			BeginFire
			BeginState
			*/
		};

		struct Inactive
		{
			/*
			TryPutDown
			StartFire
			ServerStopFire
			ServerStartFire
			BeginState
			*/
		};

		Byte CurrentFireMode; //offset = 584, size = 1
		Array<Byte> ShouldFireOnRelease; //offset = 588, size = 12
		Array<Byte> WeaponFireTypes; //offset = 600, size = 12
		Array<Name> FiringStatesArray; //offset = 612, size = 12
		Array<Class*> WeaponProjectiles; //offset = 624, size = 12
		Array<Float> FireInterval; //offset = 636, size = 12
		Array<Float> Spread; //offset = 648, size = 12
		Array<Float> InstantHitDamage; //offset = 660, size = 12
		Array<Float> InstantHitMomentum; //offset = 672, size = 12
		Array<Class*> InstantHitDamageTypes; //offset = 684, size = 12
		Float EquipTime; //offset = 696, size = 4
		Float PutDownTime; //offset = 700, size = 4
		Vector FireOffset; //offset = 704, size = 12
		Bool bWeaponPutDown: 1; //offset = 716, size = 4
		Bool bCanThrow: 1; //offset = 716, size = 4
		Bool bInstantHit: 1; //offset = 716, size = 4
		Bool bMeleeWeapon: 1; //offset = 716, size = 4
		Float WeaponRange; //offset = 720, size = 4
		MeshComponent* Mesh; //offset = 724, size = 4
		Float DefaultAnimSpeed; //offset = 728, size = 4
		Float Priority; //offset = 732, size = 4
		Float AIRating; //offset = 736, size = 4
		Float CachedMaxRange; //offset = 740, size = 4

		Bool StillFiring( Byte FireMode );
		Bool ShouldRefire();
		Bool TryPutDown();
		Vector GetPhysicalFireStartLoc( Vector AimDir, Float MuzzleDist, Vector MuzzleLoc, Vector PulledInMuzzleLoc, Vector ExtraPullIn );
		Vector GetMuzzleLoc();
		void CustomFire();
		Projectile* ProjectileFire(, Vector StartTrace, Vector EndTrace, Vector RealStartLoc, Vector AimDir, ImpactInfo TestImpact, Projectile* SpawnedProjectile );
		void ProcessInstantHit( Byte FiringMode, ImpactInfo Impact );
		void InstantFire( Vector StartTrace, Vector EndTrace, Array<ImpactInfo> ImpactList, Int idx, ImpactInfo RealImpact );
		Bool PassThroughDamage( Actor* HitActor );
		ImpactInfo CalcWeaponFire( Vector StartTrace, Vector EndTrace, Array<ImpactInfo> ImpactList, Vector HitLocation, Vector HitNormal, Vector Dir, Actor* HitActor, TraceHitInfo HitInfo, ImpactInfo CurrentImpact, PortalTeleporter* Portal, Float HitDist );
		Actor* GetTraceOwner();
		Float GetTraceRange();
		Rotator GetAdjustedAim( Vector StartFireLoc, Rotator R );
		void FireAmmunition();
		void FireModeUpdated( Byte FiringMode, Bool bViaReplication );
		void SetCurrentFireMode( Byte FiringModeNum );
		void SendToFiringState( Byte FireModeNum );
		void ForceEndFire( Int I );
		void EndFire( Byte FireModeNum );
		void ServerStopFire( Byte FireModeNum );
		void StopFire( Byte FireModeNum );
		void BeginFire( Byte FireModeNum );
		void ServerStartFire( Byte FireModeNum );
		void StartFire( Byte FireModeNum );
		void WeaponCalcCamera( Float fDeltaTime, Vector out_CamLoc, Rotator out_CamRot );
		void ClientWeaponSet( Bool bOptionalSet );
		Float AdjustFOVAngle( Float FOVAngle );
		void GetViewAxes( Vector XAxis, Vector YAxis, Vector ZAxis, Rotator AimRot );
		void DetachWeapon();
		void AttachWeaponTo( SkeletalMeshComponent* MeshCpnt, Name SocketName );
		void ClearFlashLocation();
		void SetFlashLocation( Vector HitLocation );
		void ClearFlashCount();
		void IncrementFlashCount();
		void WeaponEmpty();
		Bool DenyPickupQuery( Class* ItemClass, Actor* Pickup );
		void PutDownWeapon();
		void Activate();
		void TimeWeaponEquipping();
		void TimeWeaponPutDown();
		void RefireCheckTimer();
		void TimeWeaponFiring( Byte FireModeNum );
		Float GetFireInterval( Byte FireModeNum );
		void PlayFiringSound();
		void StopFireEffects( Byte FireModeNum );
		void PlayFireEffects( Byte FireModeNum, Vector HitLocation );
		void StopWeaponAnimation( AnimNodeSequence* AnimSeq );
		void PlayWeaponAnimation( Name Sequence, Float fDesiredDuration, Bool bLoop, SkeletalMeshComponent* SkelMesh, AnimNodeSequence* WeapNode, AnimTree* Tree );
		void WeaponPlaySound( SoundCue* Sound, Float NoiseLoudness );
		AnimNodeSequence* GetWeaponAnimNodeSeq(, AnimTree* Tree, AnimNodeSequence* AnimSeq, SkeletalMeshComponent* SkelMesh );
		Bool FireOnRelease();
		Float SuggestDefenseStyle();
		Float SuggestAttackStyle();
		Bool CanAttack( Actor* Other );
		Float RangedAttackTime();
		Bool RecommendLongRangedAttack();
		Bool FocusOnLeader( Bool bLeaderFiring );
		Bool RecommendRangedAttack();
		Float GetWeaponRating();
		Float GetAIRating();
		void GivenTo( Pawn* thisPawn, Bool bDoNotActivate );
		Float GetDamageRadius(, Class* CurrentProjectileClass );
		Float MaxRange(, Int I );
		Rotator AddSpread( Rotator BaseAim, Vector X, Vector Y, Vector Z, Float CurrentSpread, Float RandY, Float RandZ );
		Class* GetProjectileClass();
		void ClearPendingFire( Int FireMode );
		void SetPendingFire( Int FireMode );
		Bool PendingFire( Int FireMode );
		Bool HasAnyAmmo();
		Bool HasAmmo( Byte FireModeNum, Int Amount );
		Int AddAmmo( Int Amount );
		void ConsumeAmmo( Byte FireModeNum );
		void WeaponLog( String msg, String FuncStr );
		void DumpWeaponDebugToLog( Array<String> DebugInfo, Int I );
		void GetWeaponDebug( Array<String> DebugInfo, String T, Int I );
		void DisplayDebug( HUD* HUD, Float out_YL, Float out_YPos, Array<String> DebugInfo, Int I );
		Bool DenyClientWeaponSet();
		Bool IsFiring();
		void ClientWeaponThrown();
		Bool CanThrow();
		void DropFrom( Vector StartLocation, Vector StartVelocity );
		Bool DoOverridePrevWeapon();
		Bool DoOverrideNextWeapon();
		void HolderDied();
		Bool IsActiveWeapon();
		void ItemRemovedFromInvManager();
		void Destroyed();
	};

	class WindDirectionalSourceComponent: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( WindDirectionalSourceComponent, ActorComponent, Engine )

	public:

		Pointer SceneProxy; //offset = 88, size = 4
		Float Strength; //offset = 92, size = 4
		Float Phase; //offset = 96, size = 4
		Float Frequency; //offset = 100, size = 4
		Float Speed; //offset = 104, size = 4
	};

	class World: public Object
	{
		DECLARE_PACKAGE_CLASS( World, Object, Engine )

	public:
	};

	class ZoneInfo: public Info
	{
		DECLARE_PACKAGE_CLASS( ZoneInfo, Info, Engine )

	public:

		Float KillZ; //offset = 508, size = 4
		Float SoftKill; //offset = 512, size = 4
		Class* KillZDamageType; //offset = 516, size = 4
		Bool bSoftKillZ: 1; //offset = 520, size = 4
	};

	enum EConsoleType
	{
		CONSOLE_Any,
		CONSOLE_Xbox360,
	};

	enum EBMaxPath_BuildSize
	{
		BMP_Common,
		BMP_Large,
		BMP_ExtraLarge,
	};

	enum ENetMode
	{
		NM_Standalone,
		NM_DedicatedServer,
		NM_ListenServer,
	};

	struct PhysXTiming
	{
		Bool bFixedTimeStep: 1; //offset = 0, size = 4
		Float TimeStep; //offset = 4, size = 4
		Int MaxSubSteps; //offset = 8, size = 4
	};

	struct PhysXSceneTimings
	{
		PhysXTiming PrimarySceneTiming; //offset = 0, size = 12
		PhysXTiming CompartmentTimingRigidBody; //offset = 12, size = 12
		PhysXTiming CompartmentTimingFluid; //offset = 24, size = 12
		PhysXTiming CompartmentTimingCloth; //offset = 36, size = 12
		PhysXTiming CompartmentTimingSoftBody; //offset = 48, size = 12
	};

	struct CompartmentRunList
	{
		Bool RigidBody: 1; //offset = 0, size = 4
		Bool Fluid: 1; //offset = 0, size = 4
		Bool Cloth: 1; //offset = 0, size = 4
		Bool SoftBody: 1; //offset = 0, size = 4
	};

	struct NetViewer
	{
		PlayerController* InViewer; //offset = 0, size = 4
		Actor* Viewer; //offset = 4, size = 4
		Vector ViewLocation; //offset = 8, size = 12
		Vector ViewDir; //offset = 20, size = 12
	};

	class WorldInfo: public ZoneInfo
	{
		DECLARE_PACKAGE_CLASS( WorldInfo, ZoneInfo, Engine )

	public:

		PostProcessSettings DefaultPostProcessSettings; //offset = 524, size = 144
		Float SquintModeKernelSize; //offset = 668, size = 4
		PostProcessVolume* HighestPriorityPostProcessVolume; //offset = 672, size = 4
		ReverbSettings DefaultReverbSettings; //offset = 676, size = 12
		ReverbVolume* HighestPriorityReverbVolume; //offset = 688, size = 4
		Array<PortalVolume*> PortalVolumes; //offset = 692, size = 12
		Array<LevelStreaming*> StreamingLevels; //offset = 704, size = 12
		Bool bMapNeedsLightingFullyRebuilt: 1; //offset = 716, size = 4
		Bool bMapHasPathingErrors: 1; //offset = 716, size = 4
		Bool bRequestedBlockOnAsyncLoading: 1; //offset = 716, size = 4
		Bool bBegunPlay: 1; //offset = 716, size = 4
		Bool bPlayersOnly: 1; //offset = 716, size = 4
		Bool bStartup: 1; //offset = 716, size = 4
		Bool bPathsRebuilt: 1; //offset = 716, size = 4
		Bool bHasPathNodes: 1; //offset = 716, size = 4
		Bool bNoDefaultInventoryForPlayer: 1; //offset = 716, size = 4
		Bool m_bPathsToPersistantLevel: 1; //offset = 716, size = 4
		Bool m_bPathsWithinLevelOnly: 1; //offset = 716, size = 4
		Bool bNoPathWarnings: 1; //offset = 716, size = 4
		Bool bHighPriorityLoading: 1; //offset = 716, size = 4
		Bool bHighPriorityLoadingLocal: 1; //offset = 716, size = 4
		Bool bPrimarySceneHW: 1; //offset = 716, size = 4
		Bool bSupportDoubleBufferedPhysics: 1; //offset = 716, size = 4
		BookMark* BookMarks[10]; //offset = 720, size = 4
		Array<ClipPadEntry*> ClipPadEntries; //offset = 760, size = 12
		Float TimeDilation; //offset = 772, size = 4
		Float TimeSeconds; //offset = 776, size = 4
		Float RealTimeSeconds; //offset = 780, size = 4
		Float AudioTimeSeconds; //offset = 784, size = 4
		Float DeltaSeconds; //offset = 788, size = 4
		Float PauseDelay; //offset = 792, size = 4
		Float RealTimeToUnPause; //offset = 796, size = 4
		PlayerReplicationInfo* Pauser; //offset = 800, size = 4
		String VisibleGroups; //offset = 804, size = 12
		String SelectedGroups; //offset = 816, size = 12
		Bool bDropDetail: 1; //offset = 828, size = 4
		Bool bAggressiveLOD: 1; //offset = 828, size = 4
		Bool bIsMenuLevel: 1; //offset = 828, size = 4
		Bool bUseConsoleInput: 1; //offset = 828, size = 4
		Bool bShowDebugText: 1; //offset = 828, size = 4
		Texture2D* DefaultTexture; //offset = 832, size = 4
		Texture2D* WireframeTexture; //offset = 836, size = 4
		Texture2D* WhiteSquareTexture; //offset = 840, size = 4
		Texture2D* LargeVertex; //offset = 844, size = 4
		Texture2D* BSPVertex; //offset = 848, size = 4
		Array<String> DeferredExecs; //offset = 852, size = 12
		GameReplicationInfo* GRI; //offset = 864, size = 4
		Byte NetMode; //offset = 868, size = 1
		Byte m_eBioMinPath; //offset = 869, size = 1
		Byte m_eBioMaxPath; //offset = 870, size = 1
		String ComputerName; //offset = 872, size = 12
		String EngineVersion; //offset = 884, size = 12
		String MinNetVersion; //offset = 896, size = 12
		GameInfo* Game; //offset = 908, size = 4
		Float StallZ; //offset = 912, size = 4
		Float WorldGravityZ; //offset = 916, size = 4
		Float DefaultGravityZ; //offset = 920, size = 4
		Float GlobalGravityZ; //offset = 924, size = 4
		Float RBPhysicsGravityScaling; //offset = 928, size = 4
		NavigationPoint* NavigationPointList; //offset = 932, size = 4
		Controller* ControllerList; //offset = 936, size = 4
		Pawn* PawnList; //offset = 940, size = 4
		CoverLink* CoverList; //offset = 944, size = 4
		Float MoveRepSize; //offset = 948, size = 4
		Array<NetViewer> ReplicationViewers; //offset = 952, size = 12
		String NextURL; //offset = 964, size = 12
		Float NextSwitchCountdown; //offset = 976, size = 4
		Int PackedLightAndShadowMapTextureSize; //offset = 980, size = 4
		Vector DefaultColorScale; //offset = 984, size = 12
		Array<Class*> GameTypesSupportedOnThisMap; //offset = 996, size = 12
		Array<Name> PreparingLevelNames; //offset = 1008, size = 12
		Array<Name> CommittedLevelNames; //offset = 1020, size = 12
		SeqAct_CrossFadeMusicTracks* LastMusicAction; //offset = 1032, size = 4
		MusicTrackStruct LastMusicTrack; //offset = 1036, size = 36
		String Title; //offset = 1072, size = 12
		String Author; //offset = 1084, size = 12
		MapInfo* MyMapInfo; //offset = 1096, size = 4
		String EmitterPoolClassPath; //offset = 1100, size = 12
		EmitterPool* MyEmitterPool; //offset = 1112, size = 4
		String DecalManagerClassPath; //offset = 1116, size = 12
		DecalManager* MyDecalManager; //offset = 1128, size = 4
		Float MaxPhysicsDeltaTime; //offset = 1132, size = 4
		PhysXSceneTimings PhysicsTimings; //offset = 1136, size = 60
		Array<CompartmentRunList> CompartmentRunFrames; //offset = 1196, size = 12
		Float m_fInputLockTimer; //offset = 1208, size = 4

		Bool IsFinalReleaseDebugConsoleBuild();
		Bool IsShippingPCBuild();
		void DoMemoryTracking();
		Bool IsRecordingDemo();
		Byte GetDetailMode();
		String GetMapName( Bool bIncludePrefix );
		void SetMapInfo( MapInfo* NewMapInfo );
		Bool GetInputLock( Float fDuration );
		MapInfo* GetMapInfo();
		void SetSeamlessTravelMidpointPause( Bool bNowPaused );
		Bool IsInSeamlessTravel();
		void SeamlessTravel( String URL, Bool bAbsolute );
		void CommitMapChange( Bool bShouldSkipLevelStartupEvent, Bool bShouldSkipLevelBeginningEvent );
		Bool IsMapChangeReady();
		Bool IsPreparingMapChange();
		void PrepareMapChange( Array<Name> LevelNames );
		void NotifyMatchStarted( Bool bShouldActivateLevelStartupEvents, Bool bShouldActivateLevelBeginningEvents, Bool bShouldActivateLevelLoadedEvents );
		void AllPawns( Class* BaseClass, Pawn* P, Vector TestLocation, Float TestRadius );
		void AllControllers( Class* BaseClass, Controller* C );
		void NavigationPointCheck( Vector Point, Vector Extent, Array<NavigationPoint*> Navs, Array<ReachSpec*> Specs );
		void RadiusNavigationPoints( Class* BaseClass, NavigationPoint* N, Vector Point, Float Radius );
		void AllNavigationPoints( Class* BaseClass, NavigationPoint* N );
		void Reset();
		void PostBeginPlay();
		void PreBeginPlay( Class* PoolClass, Class* DecalManagerClass );
		void ThisIsNeverExecuted( DefaultPhysicsVolume* P );
		void ServerTravel( String URL, Bool bAbsolute );
		Class* GetGameClass();
		String GetAddressURL();
		void VerifyNavList();
		void RescheduleGarbageCollectionTimer( Float maxdelay );
		void DelayGarbageCollection();
		void ForceGarbageCollection( Bool bFullPurge );
		Bool IsPlayInEditor();
		Bool IsConsoleBuild( Byte ConsoleType );
		void InitDownloadableContent( Bool bFinalAttempt );
		void UnloadStreamingLevels();
		Name GetLockInputKey();
		Bool SetLockInputToControllerOnNextInput( Bool b_iValue, Name Key );
		Bool GetLockInputToControllerOnNextInput();
		Bool IsDemoBuild();
		String GetLocalURL();
		void SetLevelRBGravity( Vector NewGrav );
		Sequence* GetGameSequence();
		Float GetGravityZ();
		Bool IsServer();
		Bool IsMenuLevel( String MapName );
	};


	class AIController: public Controller
	{
		DECLARE_PACKAGE_CLASS( AIController, Controller, Engine )

	public:
		struct ScriptedRouteMove
		{
			/*
			PoppedState
			*/
		};

		struct ScriptedMove
		{
			/*
			PushedState
			PoppedState
			*/
		};

		Bool bHunting: 1; //offset = 780, size = 4
		Bool bAdjustFromWalls: 1; //offset = 780, size = 4
		Bool bReverseScriptedRoute: 1; //offset = 780, size = 4
		Float Skill; //offset = 784, size = 4
		Actor* ScriptedMoveTarget; //offset = 788, size = 4
		Route* ScriptedRoute; //offset = 792, size = 4
		Int ScriptedRouteIndex; //offset = 796, size = 4
		Actor* ScriptedFocus; //offset = 800, size = 4

		Bool ShouldAutoReload();
		Bool ShouldRefire();
		void NotifyWeaponFinishedFiring( Weapon* W, Byte FireMode );
		void NotifyWeaponFired( Weapon* W, Byte FireMode );
		void OnAIMoveToActor( SeqAct_AIMoveToActor* Action, Actor* destActor, SeqVar_Object* ObjVar );
		void GetPlayerViewPoint( Vector out_Location, Rotator out_Rotation );
		void SetTeam( Int inTeamIdx );
		Bool PriorityObjective();
		Name GetOrders();
		Actor* GetOrderObject();
		void SetOrders( Name NewOrders, Controller* OrderGiver );
		void DisplayDebug( HUD* HUD, Float out_YL, Float out_YPos, Int I, String T, Canvas* Canvas );
		void Reset();
		void PreBeginPlay();
	};

	class CoverGroupRenderingComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( CoverGroupRenderingComponent, PrimitiveComponent, Engine )

	public:
	};

	struct CoverMeshes
	{
		StaticMesh* Base; //offset = 0, size = 4
		StaticMesh* LeanLeft; //offset = 4, size = 4
		StaticMesh* LeanRight; //offset = 8, size = 4
		StaticMesh* Climb; //offset = 12, size = 4
		StaticMesh* Mantle; //offset = 16, size = 4
		StaticMesh* SlipLeft; //offset = 20, size = 4
		StaticMesh* SlipRight; //offset = 24, size = 4
		StaticMesh* SwatLeft; //offset = 28, size = 4
		StaticMesh* SwatRight; //offset = 32, size = 4
		StaticMesh* PopUp; //offset = 36, size = 4
	};

	class CoverMeshComponent: public StaticMeshComponent
	{
		DECLARE_PACKAGE_CLASS( CoverMeshComponent, StaticMeshComponent, Engine )

	public:

		Array<CoverMeshes> Meshes; //offset = 564, size = 12
		Vector LocationOffset; //offset = 576, size = 12
		StaticMesh* AutoAdjustOn; //offset = 588, size = 4
		StaticMesh* AutoAdjustOff; //offset = 592, size = 4
		StaticMesh* Disabled; //offset = 596, size = 4
	};

	class PathGoalEvaluator: public Object
	{
		DECLARE_PACKAGE_CLASS( PathGoalEvaluator, Object, Engine )

	public:

		PathGoalEvaluator* NextEvaluator; //offset = 60, size = 4
		NavigationPoint* GeneratedGoal; //offset = 64, size = 4
		Int MaxPathVisits; //offset = 68, size = 4
		Int CacheIdx; //offset = 72, size = 4
		Bool AllowStartNodeToBeGoal: 1; //offset = 76, size = 4

		String GetDumpString();
		void Recycle();
	};

	class Goal_AtActor: public PathGoalEvaluator
	{
		DECLARE_PACKAGE_CLASS( Goal_AtActor, PathGoalEvaluator, Engine )

	public:

		Actor* GoalActor; //offset = 80, size = 4
		Float GoalDist; //offset = 84, size = 4
		Bool bKeepPartial: 1; //offset = 88, size = 4

		void Recycle();
		Bool AtActor( Pawn* P, Actor* Goal, Float Dist, Bool bReturnPartial, Goal_AtActor* Eval, Pawn* GoalPawn, Controller* GoalController, Float AnchorDist );
	};

	class Goal_Null: public PathGoalEvaluator
	{
		DECLARE_PACKAGE_CLASS( Goal_Null, PathGoalEvaluator, Engine )

	public:

		void Recycle();
		Bool GoUntilBust( Pawn* P, Int InMaxPathVisits, Goal_Null* Eval );
	};

	class PathConstraint: public Object
	{
		DECLARE_PACKAGE_CLASS( PathConstraint, Object, Engine )

	public:

		Int CacheIdx; //offset = 60, size = 4
		PathConstraint* NextConstraint; //offset = 64, size = 4

		String GetDumpString();
		void Recycle();
	};

	class Path_AlongLine: public PathConstraint
	{
		DECLARE_PACKAGE_CLASS( Path_AlongLine, PathConstraint, Engine )

	public:

		Vector Direction; //offset = 68, size = 12

		void Recycle();
		Bool AlongLine( Pawn* P, Vector Dir, Path_AlongLine* Con );
	};

	class Path_AvoidInEscapableNodes: public PathConstraint
	{
		DECLARE_PACKAGE_CLASS( Path_AvoidInEscapableNodes, PathConstraint, Engine )

	public:

		Int Radius; //offset = 68, size = 4
		Int Height; //offset = 72, size = 4
		Int MaxFallSpeed; //offset = 76, size = 4
		Int MoveFlags; //offset = 80, size = 4

		void Recycle();
		Bool DontGetStuck( Pawn* P, Path_AvoidInEscapableNodes* Con );
		void CachePawnReacFlags( Pawn* P );
	};

	class Path_MinDistBetweenSpecsOfType: public PathConstraint
	{
		DECLARE_PACKAGE_CLASS( Path_MinDistBetweenSpecsOfType, PathConstraint, Engine )

	public:

		Float MinDistBetweenSpecTypes; //offset = 68, size = 4
		Vector InitLocation; //offset = 72, size = 12
		Class* ReachSpecClass; //offset = 84, size = 4

		void Recycle();
		Bool EnforceMinDist( Pawn* P, Float InMinDist, Class* InSpecClass, Vector LastLocation, Path_MinDistBetweenSpecsOfType* Con );
	};

	class Path_TowardGoal: public PathConstraint
	{
		DECLARE_PACKAGE_CLASS( Path_TowardGoal, PathConstraint, Engine )

	public:

		Actor* GoalActor; //offset = 68, size = 4

		void Recycle();
		Bool TowardGoal( Pawn* P, Actor* Goal, Path_TowardGoal* Con );
	};

	class Path_TowardPoint: public PathConstraint
	{
		DECLARE_PACKAGE_CLASS( Path_TowardPoint, PathConstraint, Engine )

	public:

		Vector GoalPoint; //offset = 68, size = 12

		void Recycle();
		Bool TowardPoint( Pawn* P, Vector Point, Path_TowardPoint* Con );
	};

	class Path_WithinDistanceEnvelope: public PathConstraint
	{
		DECLARE_PACKAGE_CLASS( Path_WithinDistanceEnvelope, PathConstraint, Engine )

	public:

		Float MaxDistance; //offset = 68, size = 4
		Float MinDistance; //offset = 72, size = 4
		Bool bSoft: 1; //offset = 76, size = 4
		Bool bOnlyThrowOutNodesThatLeaveEnvelope: 1; //offset = 76, size = 4
		Float SoftStartPenalty; //offset = 80, size = 4
		Vector EnvelopeTestPoint; //offset = 84, size = 12

		void Recycle();
		Bool StayWithinEnvelopeToLoc( Pawn* P, Vector InEnvelopeTestPoint, Float InMaxDistance, Float InMinDistance, Bool bInSoft, Float InSoftStartPenalty, Bool bOnlyTossOutSpecsThatLeave, Path_WithinDistanceEnvelope* Con );
	};

	class Path_WithinTraversalDist: public PathConstraint
	{
		DECLARE_PACKAGE_CLASS( Path_WithinTraversalDist, PathConstraint, Engine )

	public:

		Float MaxTraversalDist; //offset = 68, size = 4
		Bool bSoft: 1; //offset = 72, size = 4
		Float SoftStartPenalty; //offset = 76, size = 4

		void Recycle();
		Bool DontExceedMaxDist( Pawn* P, Float InMaxTraversalDist, Bool bInSoft, Path_WithinTraversalDist* Con );
	};

	class PathRenderingComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( PathRenderingComponent, PrimitiveComponent, Engine )

	public:
	};

	class RouteRenderingComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( RouteRenderingComponent, PrimitiveComponent, Engine )

	public:
	};

	class AnimationCompressionAlgorithm: public Object
	{
		DECLARE_PACKAGE_CLASS( AnimationCompressionAlgorithm, Object, Engine )

	public:

		String Description; //offset = 60, size = 12
		Bool bNeedsSkeleton: 1; //offset = 72, size = 4
		Byte TranslationCompressionFormat; //offset = 76, size = 1
		Byte RotationCompressionFormat; //offset = 77, size = 1
	};

	class AnimationCompressionAlgorithm_BitwiseCompressOnly: public AnimationCompressionAlgorithm
	{
		DECLARE_PACKAGE_CLASS( AnimationCompressionAlgorithm_BitwiseCompressOnly, AnimationCompressionAlgorithm, Engine )

	public:
	};

	class AnimationCompressionAlgorithm_RemoveEverySecondKey: public AnimationCompressionAlgorithm
	{
		DECLARE_PACKAGE_CLASS( AnimationCompressionAlgorithm_RemoveEverySecondKey, AnimationCompressionAlgorithm, Engine )

	public:

		Int MinKeys; //offset = 80, size = 4
		Bool bStartAtSecondKey: 1; //offset = 84, size = 4
	};

	class AnimationCompressionAlgorithm_RemoveLinearKeys: public AnimationCompressionAlgorithm
	{
		DECLARE_PACKAGE_CLASS( AnimationCompressionAlgorithm_RemoveLinearKeys, AnimationCompressionAlgorithm, Engine )

	public:

		Float MaxPosDiff; //offset = 80, size = 4
		Float MaxAngleDiff; //offset = 84, size = 4
		Float MaxEffectorDiff; //offset = 88, size = 4
		Float MinEffectorDiff; //offset = 92, size = 4
		Float ParentKeyScale; //offset = 96, size = 4
		Bool bRetarget: 1; //offset = 100, size = 4
	};

	class AnimationCompressionAlgorithm_RemoveTrivialKeys: public AnimationCompressionAlgorithm
	{
		DECLARE_PACKAGE_CLASS( AnimationCompressionAlgorithm_RemoveTrivialKeys, AnimationCompressionAlgorithm, Engine )

	public:

		Float MaxPosDiff; //offset = 80, size = 4
		Float MaxAngleDiff; //offset = 84, size = 4
	};

	class AnimationCompressionAlgorithm_RevertToRaw: public AnimationCompressionAlgorithm
	{
		DECLARE_PACKAGE_CLASS( AnimationCompressionAlgorithm_RevertToRaw, AnimationCompressionAlgorithm, Engine )

	public:
	};

	enum ESliderType
	{
		ST_1D,
		ST_2D,
	};

	struct BoneAtom
	{
		Quat Rotation; //offset = 0, size = 16
		Vector Translation; //offset = 16, size = 12
		Float Scale; //offset = 28, size = 4
	};

	class AnimNode: public Object
	{
		DECLARE_PACKAGE_CLASS( AnimNode, Object, Engine )

	public:

		SkeletalMeshComponent* SkelComponent; //offset = 60, size = 4
		Array<AnimNodeBlendBase*> ParentNodes; //offset = 64, size = 12
		Name NodeName; //offset = 76, size = 8
		Array<BoneAtom> CachedBoneAtoms; //offset = 84, size = 12
		BoneAtom CachedRootMotionDelta; //offset = 96, size = 32
		Int bCachedHasRootMotion; //offset = 128, size = 4
		Bool bRelevant: 1; //offset = 132, size = 4
		Bool bJustBecameRelevant: 1; //offset = 132, size = 4
		Bool bSkipTickWhenZeroWeight: 1; //offset = 132, size = 4
		Bool bTickDuringPausedAnims: 1; //offset = 132, size = 4
		Int NodeTickTag; //offset = 136, size = 4
		Int NodeCachedAtomsTag; //offset = 140, size = 4
		Float NodeTotalWeight; //offset = 144, size = 4
		Int SkelCompIndex; //offset = 148, size = 4
		Int DrawWidth; //offset = 152, size = 4
		Int DrawHeight; //offset = 156, size = 4
		Int NodePosX; //offset = 160, size = 4
		Int NodePosY; //offset = 164, size = 4
		Int OutDrawY; //offset = 168, size = 4
		Int InstanceVersionNumber; //offset = 172, size = 4
		Int SearchTag; //offset = 176, size = 4

		void StopAnim();
		void PlayAnim( Bool bLoop, Float Rate, Float StartTime );
		AnimNode* FindAnimNode( Name InNodeName );
		void OnCeaseRelevant();
		void OnBecomeRelevant();
		void OnInit();
	};

	struct AnimBlendChild
	{
		Name Name; //offset = 0, size = 8
		AnimNode* Anim; //offset = 8, size = 4
		Float Weight; //offset = 12, size = 4
		Int bHasRootMotion; //offset = 16, size = 4
		BoneAtom RootMotion; //offset = 20, size = 32
		Bool bMirrorSkeleton: 1; //offset = 52, size = 4
		Int DrawY; //offset = 56, size = 4
	};

	class AnimNodeBlendBase: public AnimNode
	{
		DECLARE_PACKAGE_CLASS( AnimNodeBlendBase, AnimNode, Engine )

	public:

		Array<AnimBlendChild> Children; //offset = 180, size = 12
		Bool bFixNumChildren: 1; //offset = 192, size = 4

		void StopAnim();
		void PlayAnim( Bool bLoop, Float Rate, Float StartTime );
	};

	enum EAnimAimDir
	{
		ANIMAIM_LEFTUP,
		ANIMAIM_CENTERUP,
		ANIMAIM_RIGHTUP,
		ANIMAIM_LEFTCENTER,
		ANIMAIM_CENTERCENTER,
	};

	struct AimTransform
	{
		Rotator Rotation; //offset = 0, size = 12
		Quat Quaternion; //offset = 12, size = 16
		Vector Translation; //offset = 28, size = 12
	};

	struct AimComponent
	{
		Name BoneName; //offset = 0, size = 8
		AimTransform LU; //offset = 8, size = 40
		AimTransform LC; //offset = 48, size = 40
		AimTransform LD; //offset = 88, size = 40
		AimTransform CU; //offset = 128, size = 40
		AimTransform CC; //offset = 168, size = 40
		AimTransform CD; //offset = 208, size = 40
		AimTransform RU; //offset = 248, size = 40
		AimTransform RC; //offset = 288, size = 40
		AimTransform RD; //offset = 328, size = 40
	};

	struct AimOffsetProfile
	{
		Name ProfileName; //offset = 0, size = 8
		Vector2D HorizontalRange; //offset = 8, size = 8
		Vector2D VerticalRange; //offset = 16, size = 8
		Array<AimComponent> AimComponents; //offset = 24, size = 12
		Name AnimName_LU; //offset = 36, size = 8
		Name AnimName_LC; //offset = 44, size = 8
		Name AnimName_LD; //offset = 52, size = 8
		Name AnimName_CU; //offset = 60, size = 8
		Name AnimName_CC; //offset = 68, size = 8
		Name AnimName_CD; //offset = 76, size = 8
		Name AnimName_RU; //offset = 84, size = 8
		Name AnimName_RC; //offset = 92, size = 8
		Name AnimName_RD; //offset = 100, size = 8
	};

	class AnimNodeAimOffset: public AnimNodeBlendBase
	{
		DECLARE_PACKAGE_CLASS( AnimNodeAimOffset, AnimNodeBlendBase, Engine )

	public:

		Vector2D Aim; //offset = 196, size = 8
		Vector2D AngleOffset; //offset = 204, size = 8
		Bool bForceAimDir: 1; //offset = 212, size = 4
		Bool bBakeFromAnimations: 1; //offset = 212, size = 4
		Int PassThroughAtOrAboveLOD; //offset = 216, size = 4
		Byte ForcedAimDir; //offset = 220, size = 1
		Array<Byte> RequiredBones; //offset = 224, size = 12
		Array<Int> BoneToAimCpnt; //offset = 236, size = 12
		AnimNodeAimOffset* TemplateNode; //offset = 248, size = 4
		Vector2D HorizontalRange; //offset = 252, size = 8
		Vector2D VerticalRange; //offset = 260, size = 8
		Array<AimComponent> AimComponents; //offset = 268, size = 12
		Name AnimName_LU; //offset = 280, size = 8
		Name AnimName_LC; //offset = 288, size = 8
		Name AnimName_LD; //offset = 296, size = 8
		Name AnimName_CU; //offset = 304, size = 8
		Name AnimName_CC; //offset = 312, size = 8
		Name AnimName_CD; //offset = 320, size = 8
		Name AnimName_RU; //offset = 328, size = 8
		Name AnimName_RC; //offset = 336, size = 8
		Name AnimName_RD; //offset = 344, size = 8
		Array<AimOffsetProfile> Profiles; //offset = 352, size = 12
		Int CurrentProfileIndex; //offset = 364, size = 4

		void SetActiveProfileByIndex( Int ProfileIndex );
		void SetActiveProfileByName( Name ProfileName );
	};

	class AnimNodeBlend: public AnimNodeBlendBase
	{
		DECLARE_PACKAGE_CLASS( AnimNodeBlend, AnimNodeBlendBase, Engine )

	public:

		Float Child2Weight; //offset = 196, size = 4
		Float Child2WeightTarget; //offset = 200, size = 4
		Float BlendTimeToGo; //offset = 204, size = 4

		void SetBlendTarget( Float BlendTarget, Float BlendTime );
	};

	class AnimNodeBlendList: public AnimNodeBlendBase
	{
		DECLARE_PACKAGE_CLASS( AnimNodeBlendList, AnimNodeBlendBase, Engine )

	public:

		Array<Float> TargetWeight; //offset = 196, size = 12
		Float BlendTimeToGo; //offset = 208, size = 4
		Int ActiveChildIndex; //offset = 212, size = 4
		Bool bPlayActiveChild: 1; //offset = 216, size = 4

		void SetActiveChild( Int ChildIndex, Float BlendTime );
	};

	enum EBaseBlendType
	{
		BBT_ByActorTag,
		BBT_ByActorClass,
	};

	class AnimNodeBlendByBase: public AnimNodeBlendList
	{
		DECLARE_PACKAGE_CLASS( AnimNodeBlendByBase, AnimNodeBlendList, Engine )

	public:

		Byte Type; //offset = 220, size = 1
		Name ActorTag; //offset = 224, size = 8
		Class* ActorClass; //offset = 232, size = 4
	};

	class AnimNodeBlendByPhysics: public AnimNodeBlendList
	{
		DECLARE_PACKAGE_CLASS( AnimNodeBlendByPhysics, AnimNodeBlendList, Engine )

	public:
	};

	class AnimNodeBlendByPosture: public AnimNodeBlendList
	{
		DECLARE_PACKAGE_CLASS( AnimNodeBlendByPosture, AnimNodeBlendList, Engine )

	public:
	};

	class AnimNodeBlendBySpeed: public AnimNodeBlendList
	{
		DECLARE_PACKAGE_CLASS( AnimNodeBlendBySpeed, AnimNodeBlendList, Engine )

	public:

		Float Speed; //offset = 220, size = 4
		Int LastChannel; //offset = 224, size = 4
		Float BlendUpTime; //offset = 228, size = 4
		Float BlendDownTime; //offset = 232, size = 4
		Float BlendDownPerc; //offset = 236, size = 4
		Array<Float> Constraints; //offset = 240, size = 12
		Bool bUseAcceleration: 1; //offset = 252, size = 4
	};

	class AnimNodeBlendDirectional: public AnimNodeBlendBase
	{
		DECLARE_PACKAGE_CLASS( AnimNodeBlendDirectional, AnimNodeBlendBase, Engine )

	public:

		Float DirDegreesPerSecond; //offset = 196, size = 4
		Float DirAngle; //offset = 200, size = 4
		Int SingleAnimAtOrAboveLOD; //offset = 204, size = 4
	};

	struct ChildBoneBlendInfo
	{
		Array<Float> TargetPerBoneWeight; //offset = 0, size = 12
		Name InitTargetStartBone; //offset = 12, size = 8
		Float InitPerBoneIncrease; //offset = 20, size = 4
		Name OldStartBone; //offset = 24, size = 8
		Float OldBoneIncrease; //offset = 32, size = 4
		Array<Byte> TargetRequiredBones; //offset = 36, size = 12
	};

	class AnimNodeBlendMultiBone: public AnimNodeBlendBase
	{
		DECLARE_PACKAGE_CLASS( AnimNodeBlendMultiBone, AnimNodeBlendBase, Engine )

	public:

		Array<ChildBoneBlendInfo> BlendTargetList; //offset = 196, size = 12
		Array<Byte> SourceRequiredBones; //offset = 208, size = 12

		void SetTargetStartBone( Int TargetIdx, Name StartBoneName, Float PerBoneIncrease );
	};

	class AnimNodeBlendPerBone: public AnimNodeBlend
	{
		DECLARE_PACKAGE_CLASS( AnimNodeBlendPerBone, AnimNodeBlend, Engine )

	public:

		Bool bForceLocalSpaceBlend: 1; //offset = 208, size = 4
		Array<Name> BranchStartBoneName; //offset = 212, size = 12
		Array<Float> Child2PerBoneWeight; //offset = 224, size = 12
		Array<Byte> LocalToCompReqBones; //offset = 236, size = 12
	};

	class AnimNodeCrossfader: public AnimNodeBlend
	{
		DECLARE_PACKAGE_CLASS( AnimNodeCrossfader, AnimNodeBlend, Engine )

	public:

		Name DefaultAnimSeqName; //offset = 208, size = 8
		Bool bDontBlendOutOneShot: 1; //offset = 216, size = 4
		Float PendingBlendOutTimeOneShot; //offset = 220, size = 4

		AnimNodeSequence* GetActiveChild();
		Name GetAnimName();
		void BlendToLoopingAnim( Name AnimSeqName, Float BlendInTime, Float Rate );
		void PlayOneShotAnim( Name AnimSeqName, Float BlendInTime, Float BlendOutTime, Bool bDontBlendOut, Float Rate );
	};

	class AnimNodeMirror: public AnimNodeBlendBase
	{
		DECLARE_PACKAGE_CLASS( AnimNodeMirror, AnimNodeBlendBase, Engine )

	public:

		Bool bEnableMirroring: 1; //offset = 196, size = 4
	};

	class AnimNodePlayCustomAnim: public AnimNodeBlend
	{
		DECLARE_PACKAGE_CLASS( AnimNodePlayCustomAnim, AnimNodeBlend, Engine )

	public:

		Bool bIsPlayingCustomAnim: 1; //offset = 208, size = 4
		Float CustomPendingBlendOutTime; //offset = 212, size = 4

		void SetRootBoneAxisOption( Byte AxisX, Byte AxisY, Byte AxisZ, AnimNodeSequence* AnimSeq );
		AnimNodeSequence* GetCustomAnimNodeSeq();
		void SetActorAnimEndNotification( Bool bNewStatus, AnimNodeSequence* SeqNode );
		void SetCustomAnim( Name AnimName, AnimNodeSequence* SeqNode );
		void StopCustomAnim( Float BlendOutTime );
		void PlayCustomAnimByDuration( Name AnimName, Float Duration, Float BlendInTime, Float BlendOutTime, Bool bLooping, Bool bOverride );
		Float PlayCustomAnim( Name AnimName, Float Rate, Float BlendInTime, Float BlendOutTime, Bool bLooping, Bool bOverride );
	};

	struct RandomAnimInfo
	{
		Float Chance; //offset = 0, size = 4
		Byte LoopCountMin; //offset = 4, size = 1
		Byte LoopCountMax; //offset = 5, size = 1
		Float BlendInTime; //offset = 8, size = 4
		Vector2D PlayRateRange; //offset = 12, size = 8
		Byte LoopCount; //offset = 20, size = 1
	};

	class AnimNodeRandom: public AnimNodeBlendList
	{
		DECLARE_PACKAGE_CLASS( AnimNodeRandom, AnimNodeBlendList, Engine )

	public:

		Array<RandomAnimInfo> RandomInfo; //offset = 220, size = 12
		AnimNodeSequence* PlayingSeqNode; //offset = 232, size = 4
		Int PendingChildIndex; //offset = 236, size = 4
	};

	class AnimNodeScalePlayRate: public AnimNodeBlendBase
	{
		DECLARE_PACKAGE_CLASS( AnimNodeScalePlayRate, AnimNodeBlendBase, Engine )

	public:

		Float ScaleByValue; //offset = 196, size = 4
	};

	class AnimNodeScaleRateBySpeed: public AnimNodeScalePlayRate
	{
		DECLARE_PACKAGE_CLASS( AnimNodeScaleRateBySpeed, AnimNodeScalePlayRate, Engine )

	public:

		Float BaseSpeed; //offset = 200, size = 4
	};

	struct AnimSetMeshLinkup
	{
		Guid SkelMeshLinkupGUID; //offset = 0, size = 16
		Array<Int> BoneToTrackTable; //offset = 16, size = 12
		Array<Byte> BoneUseAnimTranslation; //offset = 28, size = 12
	};

	class BioAnimSetData: public Object
	{
		DECLARE_PACKAGE_CLASS( BioAnimSetData, Object, Engine )

	public:

		Bool bAnimRotationOnly: 1; //offset = 60, size = 4
		Array<Name> TrackBoneNames; //offset = 64, size = 12
		Array<AnimSetMeshLinkup> LinkupCache; //offset = 76, size = 12
		Array<Name> UseTranslationBoneNames; //offset = 88, size = 12
		Map_Mirror MeshLinkups; //offset = 100, size = 20
	};

	enum AnimationKeyFormat
	{
		AKF_ConstantKeyLerp,
		AKF_VariableKeyLerp,
	};

	enum AnimationCompressionFormat
	{
		ACF_None,
		ACF_Float96NoW,
		ACF_Fixed48NoW,
		ACF_IntervalFixed32NoW,
	};

	struct CompressedTrack
	{
		Array<Byte> ByteStream; //offset = 0, size = 12
		Array<Float> Times; //offset = 12, size = 12
		Float Mins[3]; //offset = 24, size = 4
		Float Ranges[3]; //offset = 36, size = 4
	};

	struct RotationTrack
	{
		Array<Quat> RotKeys; //offset = 0, size = 12
		Array<Float> Times; //offset = 12, size = 12
	};

	struct TranslationTrack
	{
		Array<Vector> PosKeys; //offset = 0, size = 12
		Array<Float> Times; //offset = 12, size = 12
	};

	struct RawAnimSequenceTrack
	{
		Array<Vector> PosKeys; //offset = 0, size = 12
		Array<Quat> RotKeys; //offset = 12, size = 12
		Array<Float> KeyTimes; //offset = 24, size = 12
	};

	struct AnimNotifyEvent
	{
		Float Time; //offset = 0, size = 4
		Bool bIgnoreWeightThreshold: 1; //offset = 4, size = 4
		AnimNotify* Notify; //offset = 8, size = 4
		Name Comment; //offset = 12, size = 8
	};

	class AnimSequence: public Object
	{
		DECLARE_PACKAGE_CLASS( AnimSequence, Object, Engine )

	public:

		Name SequenceName; //offset = 60, size = 8
		Array<AnimNotifyEvent> Notifies; //offset = 68, size = 12
		Float SequenceLength; //offset = 80, size = 4
		Int NumFrames; //offset = 84, size = 4
		Float RateScale; //offset = 88, size = 4
		Bool bNoLoopingInterpolation: 1; //offset = 92, size = 4
		Bool bDoNotOverrideCompression: 1; //offset = 92, size = 4
		Bool bRawAnimationBulkDataCached: 1; //offset = 92, size = 4
		Bool bRawAnimationDirty: 1; //offset = 92, size = 4
		Array<RawAnimSequenceTrack> RawAnimData; //offset = 96, size = 12
		Array<RawAnimSequenceTrack> RawAnimationDataCache; //offset = 108, size = 12
		UntypedBulkData_Mirror RawAnimationBulkData; //offset = 120, size = 52
		Array<TranslationTrack> TranslationData; //offset = 172, size = 12
		Array<RotationTrack> RotationData; //offset = 184, size = 12
		AnimationCompressionAlgorithm* CompressionScheme; //offset = 196, size = 4
		Byte TranslationCompressionFormat; //offset = 200, size = 1
		Byte RotationCompressionFormat; //offset = 201, size = 1
		Byte KeyEncodingFormat; //offset = 202, size = 1
		Array<Byte> CompressedByteStream; //offset = 204, size = 12
		Array<Int> CompressedTrackOffsets; //offset = 216, size = 12
		Pointer TranslationCodec; //offset = 228, size = 4
		Pointer RotationCodec; //offset = 232, size = 4
		BioAnimSetData* m_pBioAnimSetData; //offset = 236, size = 4
		Int EncodingPkgVersion; //offset = 240, size = 4
	};

	enum ERootRotationOption
	{
		RRO_Default,
		RRO_Discard,
	};

	enum ERootBoneAxis
	{
		RBA_Default,
		RBA_Discard,
	};

	class AnimNodeSequence: public AnimNode
	{
		DECLARE_PACKAGE_CLASS( AnimNodeSequence, AnimNode, Engine )

	public:

		Name AnimSeqName; //offset = 180, size = 8
		Float Rate; //offset = 188, size = 4
		Bool bPlaying: 1; //offset = 192, size = 4
		Bool bLooping: 1; //offset = 192, size = 4
		Bool bCauseActorAnimEnd: 1; //offset = 192, size = 4
		Bool bCauseActorAnimPlay: 1; //offset = 192, size = 4
		Bool bZeroRootRotation: 1; //offset = 192, size = 4
		Bool bZeroRootTranslation: 1; //offset = 192, size = 4
		Bool bHasWeightIgnoreNotifies: 1; //offset = 192, size = 4
		Bool bNoNotifies: 1; //offset = 192, size = 4
		Bool bForceRefposeWhenNotPlaying: 1; //offset = 192, size = 4
		Bool bIsIssuingNotifies: 1; //offset = 192, size = 4
		Bool bForceAlwaysSlave: 1; //offset = 192, size = 4
		Bool bForceAlwaysMaster: 1; //offset = 192, size = 4
		Bool bSynchronize: 1; //offset = 192, size = 4
		Bool bShowTimeLineSlider: 1; //offset = 192, size = 4
		Float CurrentTime; //offset = 196, size = 4
		Float PreviousTime; //offset = 200, size = 4
		AnimSequence* AnimSeq; //offset = 204, size = 4
		Int AnimLinkupIndex; //offset = 208, size = 4
		Float NotifyWeightThreshold; //offset = 212, size = 4
		Name SynchGroupName; //offset = 216, size = 8
		Float SynchPosOffset; //offset = 224, size = 4
		Byte RootBoneOption[3]; //offset = 228, size = 1
		Byte RootRotationOption[3]; //offset = 231, size = 1

		Float GetTimeLeft();
		Float GetAnimPlaybackLength();
		Float GetGlobalPlayRate();
		Float FindNormalizedPositionFromGroupRelativePosition( Float GroupRelativePosition );
		Float GetNormalizedPosition();
		void SetPosition( Float NewTime, Bool bFireNotifies );
		void StopAnim();
		void PlayAnim( Bool bLoop, Float InRate, Float StartTime );
		void SetAnim( Name Sequence );
	};

	struct AnimInfo
	{
		Name AnimSeqName; //offset = 0, size = 8
		AnimSequence* AnimSeq; //offset = 8, size = 4
		Int AnimLinkupIndex; //offset = 12, size = 4
	};

	struct AnimBlendInfo
	{
		Name AnimName; //offset = 0, size = 8
		AnimInfo AnimInfo; //offset = 8, size = 16
		Float Weight; //offset = 24, size = 4
	};

	class AnimNodeSequenceBlendBase: public AnimNodeSequence
	{
		DECLARE_PACKAGE_CLASS( AnimNodeSequenceBlendBase, AnimNodeSequence, Engine )

	public:

		Array<AnimBlendInfo> Anims; //offset = 236, size = 12
	};

	class AnimNodeSequenceBlendByAim: public AnimNodeSequenceBlendBase
	{
		DECLARE_PACKAGE_CLASS( AnimNodeSequenceBlendByAim, AnimNodeSequenceBlendBase, Engine )

	public:

		Vector2D Aim; //offset = 248, size = 8
		Vector2D HorizontalRange; //offset = 256, size = 8
		Vector2D VerticalRange; //offset = 264, size = 8
		Vector2D AngleOffset; //offset = 272, size = 8
		Name AnimName_LU; //offset = 280, size = 8
		Name AnimName_LC; //offset = 288, size = 8
		Name AnimName_LD; //offset = 296, size = 8
		Name AnimName_CU; //offset = 304, size = 8
		Name AnimName_CC; //offset = 312, size = 8
		Name AnimName_CD; //offset = 320, size = 8
		Name AnimName_RU; //offset = 328, size = 8
		Name AnimName_RC; //offset = 336, size = 8
		Name AnimName_RD; //offset = 344, size = 8
	};

	struct SynchGroup
	{
		Array<AnimNodeSequence*> SeqNodes; //offset = 0, size = 12
		AnimNodeSequence* MasterNode; //offset = 12, size = 4
		Name GroupName; //offset = 16, size = 8
		Bool bFireSlaveNotifies: 1; //offset = 24, size = 4
		Float RateScale; //offset = 28, size = 4
	};

	class AnimNodeSynch: public AnimNodeBlendBase
	{
		DECLARE_PACKAGE_CLASS( AnimNodeSynch, AnimNodeBlendBase, Engine )

	public:

		Array<SynchGroup> Groups; //offset = 196, size = 12

		void SetGroupRateScale( Name GroupName, Float NewRateScale );
		Float GetRelativePosition( Name GroupName );
		void ForceRelativePosition( Name GroupName, Float RelativePosition );
		AnimNodeSequence* GetMasterNodeOfGroup( Name GroupName );
		void RemoveNodeFromGroup( AnimNodeSequence* SeqNode, Name GroupName );
		void AddNodeToGroup( AnimNodeSequence* SeqNode, Name GroupName );
	};

	class AnimNodeSlot: public AnimNodeBlendBase
	{
		DECLARE_PACKAGE_CLASS( AnimNodeSlot, AnimNodeBlendBase, Engine )

	public:

		Bool bIsPlayingCustomAnim: 1; //offset = 196, size = 4
		Float PendingBlendOutTime; //offset = 200, size = 4
		Int CustomChildIndex; //offset = 204, size = 4
		Int TargetChildIndex; //offset = 208, size = 4
		Array<Float> TargetWeight; //offset = 212, size = 12
		Float BlendTimeToGo; //offset = 224, size = 4
		AnimNodeSynch* SynchNode; //offset = 228, size = 4

		void AddToSynchGroup( Name GroupName );
		void AccelerateBlend( Float BlendAmount, Int I, Float BlendDelta );
		void SetRootBoneAxisOption( Byte AxisX, Byte AxisY, Byte AxisZ );
		AnimNodeSequence* GetCustomAnimNodeSeq();
		void SetActorAnimEndNotification( Bool bNewStatus );
		void SetCustomAnim( Name AnimName );
		void StopCustomAnim( Float BlendOutTime );
		Name GetPlayedAnimation();
		void PlayCustomAnimByDuration( Name AnimName, Float Duration, Float BlendInTime, Float BlendOutTime, Bool bLooping, Bool bOverride );
		Float PlayCustomAnim( Name AnimName, Float Rate, Float BlendInTime, Float BlendOutTime, Bool bLooping, Bool bOverride );
	};

	class AnimNotify: public Object
	{
		DECLARE_PACKAGE_CLASS( AnimNotify, Object, Engine )

	public:
	};

	class AnimNotify_Footstep: public AnimNotify
	{
		DECLARE_PACKAGE_CLASS( AnimNotify_Footstep, AnimNotify, Engine )

	public:

		Int FootDown; //offset = 60, size = 4
	};

	class AnimNotify_Script: public AnimNotify
	{
		DECLARE_PACKAGE_CLASS( AnimNotify_Script, AnimNotify, Engine )

	public:

		Name NotifyName; //offset = 60, size = 8
	};

	class AnimNotify_Scripted: public AnimNotify
	{
		DECLARE_PACKAGE_CLASS( AnimNotify_Scripted, AnimNotify, Engine )

	public:

		void Notify( Actor* Owner, AnimNodeSequence* AnimSeqInstigator );
	};

	class AnimNotify_Sound: public AnimNotify
	{
		DECLARE_PACKAGE_CLASS( AnimNotify_Sound, AnimNotify, Engine )

	public:

		SoundCue* SoundCue; //offset = 60, size = 4
		Bool bFollowActor: 1; //offset = 64, size = 4
		Name BoneName; //offset = 68, size = 8
	};

	class AnimSet: public Object
	{
		DECLARE_PACKAGE_CLASS( AnimSet, Object, Engine )

	public:

		Array<AnimSequence*> Sequences; //offset = 60, size = 12
		Name PreviewSkelMeshName; //offset = 72, size = 8
		Bool bAnimRotationOnly: 1; //offset = 80, size = 4
		Array<Name> TrackBoneNames; //offset = 84, size = 12
		Array<Name> UseTranslationBoneNames; //offset = 96, size = 12
		BioAnimSetData* m_pBioAnimSetData; //offset = 108, size = 4
	};

	struct SkelControlListHead
	{
		Name BoneName; //offset = 0, size = 8
		SkelControlBase* ControlHead; //offset = 8, size = 4
		Int DrawY; //offset = 12, size = 4
	};

	struct AnimGroup
	{
		Array<AnimNodeSequence*> SeqNodes; //offset = 0, size = 12
		AnimNodeSequence* SynchMaster; //offset = 12, size = 4
		AnimNodeSequence* NotifyMaster; //offset = 16, size = 4
		Name GroupName; //offset = 20, size = 8
		Float RateScale; //offset = 28, size = 4
	};

	class AnimTree: public AnimNodeBlendBase
	{
		DECLARE_PACKAGE_CLASS( AnimTree, AnimNodeBlendBase, Engine )

	public:

		Array<AnimGroup> AnimGroups; //offset = 196, size = 12
		Array<Name> PrioritizedSkelBranches; //offset = 208, size = 12
		Array<Byte> PriorityList; //offset = 220, size = 12
		Array<MorphNodeBase*> RootMorphNodes; //offset = 232, size = 12
		Array<SkelControlListHead> SkelControlLists; //offset = 244, size = 12
		Int MorphConnDrawY; //offset = 256, size = 4
		Bool bBeingEdited: 1; //offset = 260, size = 4
		Float PreviewPlayRate; //offset = 264, size = 4
		SkeletalMesh* PreviewSkelMesh; //offset = 268, size = 4
		SkeletalMesh* SocketSkelMesh; //offset = 272, size = 4
		StaticMesh* SocketStaticMesh; //offset = 276, size = 4
		Name SocketName; //offset = 280, size = 8
		Array<AnimSet*> PreviewAnimSets; //offset = 288, size = 12
		Array<MorphTargetSet*> PreviewMorphSets; //offset = 300, size = 12
		Vector PreviewCamPos; //offset = 312, size = 12
		Rotator PreviewCamRot; //offset = 324, size = 12
		Vector PreviewFloorPos; //offset = 336, size = 12
		Int PreviewFloorYaw; //offset = 348, size = 4

		Int GetGroupIndex( Name GroupName );
		void SetGroupRateScale( Name GroupName, Float NewRateScale );
		Float GetGroupRelativePosition( Name GroupName );
		void ForceGroupRelativePosition( Name GroupName, Float RelativePosition );
		AnimNodeSequence* GetGroupNotifyMaster( Name GroupName );
		AnimNodeSequence* GetGroupSynchMaster( Name GroupName );
		Bool SetAnimGroupForNode( AnimNodeSequence* SeqNode, Name GroupName, Bool bCreateIfNotFound );
		MorphNodeBase* FindMorphNode( Name InNodeName );
		SkelControlBase* FindSkelControl( Name InControlName );
	};

	class BioDynamicAnimSet: public AnimSet
	{
		DECLARE_PACKAGE_CLASS( BioDynamicAnimSet, AnimSet, Engine )

	public:

		Map_Mirror m_mapRefCounts; //offset = 112, size = 20
		BioDynamicAnimSet* m_pGlobalAnimSet; //offset = 132, size = 4
		Name m_nmOrigSetName; //offset = 136, size = 8
	};

	class MorphNodeBase: public Object
	{
		DECLARE_PACKAGE_CLASS( MorphNodeBase, Object, Engine )

	public:

		Name NodeName; //offset = 60, size = 8
		Bool bDrawSlider: 1; //offset = 68, size = 4
		SkeletalMeshComponent* SkelComponent; //offset = 72, size = 4
		Int NodePosX; //offset = 76, size = 4
		Int NodePosY; //offset = 80, size = 4
		Int DrawWidth; //offset = 84, size = 4
		Int DrawHeight; //offset = 88, size = 4
		Int OutDrawY; //offset = 92, size = 4
	};

	class MorphNodePose: public MorphNodeBase
	{
		DECLARE_PACKAGE_CLASS( MorphNodePose, MorphNodeBase, Engine )

	public:

		MorphTarget* Target; //offset = 96, size = 4
		Name MorphName; //offset = 100, size = 8
		Float Weight; //offset = 108, size = 4

		void SetMorphTarget( Name MorphTargetName );
	};

	struct MorphNodeConn
	{
		Array<MorphNodeBase*> ChildNodes; //offset = 0, size = 12
		Name ConnName; //offset = 12, size = 8
		Int DrawY; //offset = 20, size = 4
	};

	class MorphNodeWeightBase: public MorphNodeBase
	{
		DECLARE_PACKAGE_CLASS( MorphNodeWeightBase, MorphNodeBase, Engine )

	public:

		Array<MorphNodeConn> NodeConns; //offset = 96, size = 12
	};

	class MorphNodeWeight: public MorphNodeWeightBase
	{
		DECLARE_PACKAGE_CLASS( MorphNodeWeight, MorphNodeWeightBase, Engine )

	public:

		Float NodeWeight; //offset = 108, size = 4

		void SetNodeWeight( Float NewWeight );
	};

	class MorphTarget: public Object
	{
		DECLARE_PACKAGE_CLASS( MorphTarget, Object, Engine )

	public:

		Array<Int> MorphLODModels; //offset = 60, size = 12
		Array<Int> OffsetSkeleton; //offset = 72, size = 12
		Array<Int> OffsetSkeleton_dep; //offset = 84, size = 12
	};

	class MorphTargetSet: public Object
	{
		DECLARE_PACKAGE_CLASS( MorphTargetSet, Object, Engine )

	public:

		Array<MorphTarget*> Targets; //offset = 60, size = 12
		SkeletalMesh* BaseSkelMesh; //offset = 72, size = 4

		MorphTarget* FindMorphTarget( Name MorphTargetName );
	};

	class MorphWeightSequence: public Object
	{
		DECLARE_PACKAGE_CLASS( MorphWeightSequence, Object, Engine )

	public:
	};

	enum EBoneControlSpace
	{
		BCS_WorldSpace,
		BCS_ActorSpace,
		BCS_ComponentSpace,
		BCS_ParentBoneSpace,
	};

	class SkelControlBase: public Object
	{
		DECLARE_PACKAGE_CLASS( SkelControlBase, Object, Engine )

	public:

		SkeletalMeshComponent* SkelComponent; //offset = 60, size = 4
		Name ControlName; //offset = 64, size = 8
		Float ControlStrength; //offset = 72, size = 4
		Float BlendInTime; //offset = 76, size = 4
		Float BlendOutTime; //offset = 80, size = 4
		Float StrengthTarget; //offset = 84, size = 4
		Float BlendTimeToGo; //offset = 88, size = 4
		Bool bSetStrengthFromAnimNode: 1; //offset = 92, size = 4
		Bool bPropagateSetActive: 1; //offset = 92, size = 4
		Bool bIgnoreWhenNotRendered: 1; //offset = 92, size = 4
		Bool bEnableEaseInOut: 1; //offset = 92, size = 4
		Array<Name> StrengthAnimNodeNameList; //offset = 96, size = 12
		Array<AnimNode*> CachedNodeList; //offset = 108, size = 12
		Bool bInitializedCachedNodeList: 1; //offset = 120, size = 4
		Float BoneScale; //offset = 124, size = 4
		Int ControlTickTag; //offset = 128, size = 4
		Int IgnoreAtOrAboveLOD; //offset = 132, size = 4
		SkelControlBase* NextControl; //offset = 136, size = 4
		Int ControlPosX; //offset = 140, size = 4
		Int ControlPosY; //offset = 144, size = 4
		Int DrawWidth; //offset = 148, size = 4

		void SetSkelControlStrength( Float NewStrength, Float InBlendTime );
		void SetSkelControlActive( Bool bInActive );
	};

	class SkelControlLimb: public SkelControlBase
	{
		DECLARE_PACKAGE_CLASS( SkelControlLimb, SkelControlBase, Engine )

	public:

		Vector EffectorLocation; //offset = 152, size = 12
		Byte EffectorLocationSpace; //offset = 164, size = 1
		Byte JointTargetLocationSpace; //offset = 165, size = 1
		Byte BoneAxis; //offset = 166, size = 1
		Byte JointAxis; //offset = 167, size = 1
		Name EffectorSpaceBoneName; //offset = 168, size = 8
		Vector JointTargetLocation; //offset = 176, size = 12
		Name JointTargetSpaceBoneName; //offset = 188, size = 8
		Bool bInvertBoneAxis: 1; //offset = 196, size = 4
		Bool bInvertJointAxis: 1; //offset = 196, size = 4
		Bool bMaintainEffectorRelRot: 1; //offset = 196, size = 4
		Bool bTakeRotationFromEffectorSpace: 1; //offset = 196, size = 4
	};

	class SkelControlFootPlacement: public SkelControlLimb
	{
		DECLARE_PACKAGE_CLASS( SkelControlFootPlacement, SkelControlLimb, Engine )

	public:

		Float FootOffset; //offset = 200, size = 4
		Byte FootUpAxis; //offset = 204, size = 1
		Rotator FootRotOffset; //offset = 208, size = 12
		Bool bInvertFootUpAxis: 1; //offset = 220, size = 4
		Bool bOrientFootToGround: 1; //offset = 220, size = 4
		Bool bOnlyEnableForUpAdjustment: 1; //offset = 220, size = 4
		Float MaxUpAdjustment; //offset = 224, size = 4
		Float MaxDownAdjustment; //offset = 228, size = 4
		Float MaxFootOrientAdjust; //offset = 232, size = 4
	};

	class SkelControlLookAt: public SkelControlBase
	{
		DECLARE_PACKAGE_CLASS( SkelControlLookAt, SkelControlBase, Engine )

	public:

		Vector TargetLocation; //offset = 152, size = 12
		Byte TargetLocationSpace; //offset = 164, size = 1
		Byte LookAtAxis; //offset = 165, size = 1
		Byte UpAxis; //offset = 166, size = 1
		Byte AllowRotationSpace; //offset = 167, size = 1
		Name TargetSpaceBoneName; //offset = 168, size = 8
		Bool bInvertLookAtAxis: 1; //offset = 176, size = 4
		Bool bDefineUpAxis: 1; //offset = 176, size = 4
		Bool bInvertUpAxis: 1; //offset = 176, size = 4
		Bool bEnableLimit: 1; //offset = 176, size = 4
		Bool bLimitBasedOnRefPose: 1; //offset = 176, size = 4
		Bool bDisableBeyondLimit: 1; //offset = 176, size = 4
		Bool bNotifyBeyondLimit: 1; //offset = 176, size = 4
		Bool bShowLimit: 1; //offset = 176, size = 4
		Bool bAllowRotationX: 1; //offset = 176, size = 4
		Bool bAllowRotationY: 1; //offset = 176, size = 4
		Bool bAllowRotationZ: 1; //offset = 176, size = 4
		Float TargetLocationInterpSpeed; //offset = 180, size = 4
		Vector DesiredTargetLocation; //offset = 184, size = 12
		Float MaxAngle; //offset = 196, size = 4
		Float DeadZoneAngle; //offset = 200, size = 4
		Name AllowRotationOtherBoneName; //offset = 204, size = 8
		Float LookAtAlpha; //offset = 212, size = 4
		Float LookAtAlphaTarget; //offset = 216, size = 4
		Float LookAtAlphaBlendTimeToGo; //offset = 220, size = 4
		Vector LimitLookDir; //offset = 224, size = 12
		Vector BaseLookDir; //offset = 236, size = 12
		Vector BaseBonePos; //offset = 248, size = 12
		Float LastCalcTime; //offset = 260, size = 4

		Bool CanLookAtPoint( Vector PointLoc, Bool bDrawDebugInfo, Bool bDebugUsePersistentLines, Bool bDebugFlushLinesFirst );
		void SetLookAtAlpha( Float DesiredAlpha, Float DesiredBlendTime );
		void InterpolateTargetLocation( Float DeltaTime );
		void SetTargetLocation( Vector NewTargetLocation );
	};

	class SkelControlSingleBone: public SkelControlBase
	{
		DECLARE_PACKAGE_CLASS( SkelControlSingleBone, SkelControlBase, Engine )

	public:

		Bool bApplyTranslation: 1; //offset = 152, size = 4
		Bool bAddTranslation: 1; //offset = 152, size = 4
		Bool bApplyRotation: 1; //offset = 152, size = 4
		Bool bAddRotation: 1; //offset = 152, size = 4
		Vector BoneTranslation; //offset = 156, size = 12
		Byte BoneTranslationSpace; //offset = 168, size = 1
		Byte BoneRotationSpace; //offset = 169, size = 1
		Name TranslationSpaceBoneName; //offset = 172, size = 8
		Rotator BoneRotation; //offset = 180, size = 12
		Name RotationSpaceBoneName; //offset = 192, size = 8
	};

	enum ESplineControlRotMode
	{
		SCR_NoChange,
		SCR_AlongSpline,
	};

	class SkelControlSpline: public SkelControlBase
	{
		DECLARE_PACKAGE_CLASS( SkelControlSpline, SkelControlBase, Engine )

	public:

		Int SplineLength; //offset = 152, size = 4
		Byte SplineBoneAxis; //offset = 156, size = 1
		Byte BoneRotMode; //offset = 157, size = 1
		Bool bInvertSplineBoneAxis: 1; //offset = 160, size = 4
		Float EndSplineTension; //offset = 164, size = 4
		Float StartSplineTension; //offset = 168, size = 4
	};

	class SkelControlTrail: public SkelControlBase
	{
		DECLARE_PACKAGE_CLASS( SkelControlTrail, SkelControlBase, Engine )

	public:

		Int ChainLength; //offset = 152, size = 4
		Byte ChainBoneAxis; //offset = 156, size = 1
		Bool bInvertChainBoneAxis: 1; //offset = 160, size = 4
		Bool bLimitStretch: 1; //offset = 160, size = 4
		Bool bHadValidStrength: 1; //offset = 160, size = 4
		Float TrailRelaxation; //offset = 164, size = 4
		Float StretchLimit; //offset = 168, size = 4
		Float ThisTimstep; //offset = 172, size = 4
		Array<Vector> TrailBoneLocations; //offset = 176, size = 12
	};

	class SkelControlWheel: public SkelControlSingleBone
	{
		DECLARE_PACKAGE_CLASS( SkelControlWheel, SkelControlSingleBone, Engine )

	public:

		Float WheelDisplacement; //offset = 200, size = 4
		Float WheelMaxRenderDisplacement; //offset = 204, size = 4
		Float WheelRoll; //offset = 208, size = 4
		Byte WheelRollAxis; //offset = 212, size = 1
		Byte WheelSteeringAxis; //offset = 213, size = 1
		Float WheelSteering; //offset = 216, size = 4
		Bool bInvertWheelRoll: 1; //offset = 220, size = 4
		Bool bInvertWheelSteering: 1; //offset = 220, size = 4
	};

	class SkeletalMeshActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( SkeletalMeshActor, Actor, Engine )

	public:

		SkeletalMeshComponent* SkeletalMeshComponent; //offset = 508, size = 4
		LightEnvironmentComponent* LightEnvironment; //offset = 512, size = 4
		AudioComponent* FacialAudioComp; //offset = 516, size = 4
		SkeletalMesh* ReplicatedMesh; //offset = 520, size = 4

		void DoKismetAttachment( Actor* Attachment, SeqAct_AttachToActor* Action, Bool bOldCollideActors, Bool bOldBlockActors, Bool bValidBone, Bool bValidSocket );
		void OnSetMaterial( SeqAct_SetMaterial* Action );
		void OnSetSkeletalMesh( SeqAct_SetSkeletalMesh* Action );
		Bool IsActorPlayingFaceFXAnim();
		FaceFXAsset* GetActorFaceFXAsset();
		void OnPlayFaceFXAnim( SeqAct_PlayFaceFXAnim* inAction, PlayerController* PC );
		AudioComponent* GetFaceFXAudioComponent();
		void StopActorFaceFXAnim();
		Bool PlayActorFaceFXAnim( FaceFXAnimSet* AnimSet, String GroupName, String SeqName );
		void FinishAnimControl();
		void SetAnimWeights( Array<AnimSlotInfo> SlotInfos );
		void SetAnimPosition( Name SlotName, Int ChannelIndex, Name InAnimSeqName, Float InPosition, Bool bFireNotifies, Bool bLooping, AnimNodeSequence* SeqNode );
		void BeginAnimControl( Array<AnimSet*> InAnimSets, AnimNodeSequence* SeqNode );
		void OnToggle( SeqAct_Toggle* Action, AnimNodeSequence* SeqNode );
		void ReplicatedEvent( Name VarName );
		void PostBeginPlay();
	};

	class SkeletalMeshActorMAT: public SkeletalMeshActor
	{
		DECLARE_PACKAGE_CLASS( SkeletalMeshActorMAT, SkeletalMeshActor, Engine )

	public:

		Array<AnimNodeSlot*> SlotNodes; //offset = 524, size = 12

		void SetSkelControlScale( Name SkelControlName, Float Scale );
		void SetMorphWeight( Name MorphNodeName, Float MorphWeight );
		void FinishAnimControl();
		void SetAnimWeights( Array<AnimSlotInfo> SlotInfos );
		void SetAnimPosition( Name SlotName, Int ChannelIndex, Name InAnimSeqName, Float InPosition, Bool bFireNotifies, Bool bLooping );
		void BeginAnimControl( Array<AnimSet*> InAnimSets );
		void MAT_SetSkelControlScale( Name SkelControlName, Float Scale );
		void MAT_SetMorphWeight( Name MorphNodeName, Float MorphWeight );
		void MAT_FinishAnimControl();
		void MAT_SetAnimWeights( Array<AnimSlotInfo> SlotInfos );
		void MAT_SetAnimPosition( Name SlotName, Int ChannelIndex, Name InAnimSeqName, Float InPosition, Bool bFireNotifies, Bool bLooping );
		void MAT_BeginAnimControl( Array<AnimSet*> InAnimSets );
	};

	class ActorFactoryDecal: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryDecal, ActorFactory, Engine )

	public:

		MaterialInterface* DecalMaterial; //offset = 100, size = 4
	};

	enum EFilterMode
	{
		FM_None,
		FM_Ignore,
	};

	struct DecalReceiver
	{
		PrimitiveComponent* Component; //offset = 0, size = 4
		Pointer RenderData; //offset = 4, size = 4
	};

	class DecalComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( DecalComponent, PrimitiveComponent, Engine )

	public:

		MaterialInterface* DecalMaterial; //offset = 448, size = 4
		Float Width; //offset = 452, size = 4
		Float Height; //offset = 456, size = 4
		Float TileX; //offset = 460, size = 4
		Float TileY; //offset = 464, size = 4
		Float OffsetX; //offset = 468, size = 4
		Float OffsetY; //offset = 472, size = 4
		Float DecalRotation; //offset = 476, size = 4
		Float Thickness; //offset = 480, size = 4
		Float FieldOfView; //offset = 484, size = 4
		Float NearPlane; //offset = 488, size = 4
		Float FarPlane; //offset = 492, size = 4
		Vector Location; //offset = 496, size = 12
		Rotator Orientation; //offset = 508, size = 12
		Vector HitLocation; //offset = 520, size = 12
		Vector HitNormal; //offset = 532, size = 12
		Vector HitTangent; //offset = 544, size = 12
		Vector HitBinormal; //offset = 556, size = 12
		Bool bNoClip: 1; //offset = 568, size = 4
		Bool bStaticDecal: 1; //offset = 568, size = 4
		Bool bProjectOnBackfaces: 1; //offset = 568, size = 4
		Bool bProjectOnHidden: 1; //offset = 568, size = 4
		Bool bProjectOnBSP: 1; //offset = 568, size = 4
		Bool bProjectOnStaticMeshes: 1; //offset = 568, size = 4
		Bool bProjectOnSkeletalMeshes: 1; //offset = 568, size = 4
		Bool bProjectOnTerrain: 1; //offset = 568, size = 4
		Bool bFlipBackfaceDirection: 1; //offset = 568, size = 4
		PrimitiveComponent* HitComponent; //offset = 572, size = 4
		Name HitBone; //offset = 576, size = 8
		Int HitNodeIndex; //offset = 584, size = 4
		Int HitLevelIndex; //offset = 588, size = 4
		Array<Int> HitNodeIndices; //offset = 592, size = 12
		Array<DecalReceiver> DecalReceivers; //offset = 604, size = 12
		Array<Pointer> StaticReceivers; //offset = 616, size = 12
		Pointer ReleaseResourcesFence; //offset = 628, size = 4
		Array<Plane> Planes; //offset = 632, size = 12
		Float DepthBias; //offset = 644, size = 4
		Float SlopeScaleDepthBias; //offset = 648, size = 4
		Int SortOrder; //offset = 652, size = 4
		Float BackfaceAngle; //offset = 656, size = 4
		Byte FilterMode; //offset = 660, size = 1
		Array<Actor*> Filter; //offset = 664, size = 12
		Array<PrimitiveComponent*> ReceiverImages; //offset = 676, size = 12

		void ResetToDefaults();
	};

	class DecalActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( DecalActor, Actor, Engine )

	public:

		DecalComponent* Decal; //offset = 508, size = 4
	};

	struct ActiveDecalInfo
	{
		DecalComponent* Decal; //offset = 0, size = 4
		Float LifetimeRemaining; //offset = 4, size = 4
	};

	class DecalManager: public Actor
	{
		DECLARE_PACKAGE_CLASS( DecalManager, Actor, Engine )

	public:

		DecalComponent* DecalTemplate; //offset = 508, size = 4
		Array<DecalComponent*> PoolDecals; //offset = 512, size = 12
		Int MaxActiveDecals; //offset = 524, size = 4
		Float DecalLifeSpan; //offset = 528, size = 4
		Array<ActiveDecalInfo> ActiveDecals; //offset = 532, size = 12

		DecalComponent* SpawnDecal( MaterialInterface* DecalMaterial, Vector DecalLocation, Rotator DecalOrientation, Float Width, Float Height, Float Thickness, Bool bNoClip, Float DecalRotation, PrimitiveComponent* HitComponent, Bool bProjectOnTerrain, Bool bProjectOnSkeletalMeshes, Name HitBone, Int HitNodeIndex, Int HitLevelIndex );
		Bool CanSpawnDecals();
		void DecalFinished( DecalComponent* Decal );
		Bool AreDynamicDecalsEnabled();
	};

	class DecalMaterial: public Material
	{
		DECLARE_PACKAGE_CLASS( DecalMaterial, Material, Engine )

	public:
	};

	class FogVolumeDensityComponent: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( FogVolumeDensityComponent, ActorComponent, Engine )

	public:

		Bool bEnabled: 1; //offset = 88, size = 4
		LinearColor ApproxFogLightColor; //offset = 92, size = 16
		Array<Actor*> FogVolumeActors; //offset = 108, size = 12

		void SetEnabled( Bool bSetEnabled );
	};

	class FogVolumeConeDensityComponent: public FogVolumeDensityComponent
	{
		DECLARE_PACKAGE_CLASS( FogVolumeConeDensityComponent, FogVolumeDensityComponent, Engine )

	public:

		Float MaxDensity; //offset = 120, size = 4
		Vector ConeVertex; //offset = 124, size = 12
		Float ConeRadius; //offset = 136, size = 4
		Vector ConeAxis; //offset = 140, size = 12
		Float ConeMaxAngle; //offset = 152, size = 4
		DrawLightConeComponent* PreviewCone; //offset = 156, size = 4
	};

	class FogVolumeDensityInfo: public Info
	{
		DECLARE_PACKAGE_CLASS( FogVolumeDensityInfo, Info, Engine )

	public:

		FogVolumeDensityComponent* DensityComponent; //offset = 508, size = 4
		Bool bEnabled: 1; //offset = 512, size = 4

		void OnToggle( SeqAct_Toggle* Action );
		void ReplicatedEvent( Name VarName );
		void PostBeginPlay();
	};

	class FogVolumeConeDensityInfo: public FogVolumeDensityInfo
	{
		DECLARE_PACKAGE_CLASS( FogVolumeConeDensityInfo, FogVolumeDensityInfo, Engine )

	public:
	};

	class FogVolumeConstantDensityComponent: public FogVolumeDensityComponent
	{
		DECLARE_PACKAGE_CLASS( FogVolumeConstantDensityComponent, FogVolumeDensityComponent, Engine )

	public:

		Float Density; //offset = 120, size = 4
	};

	class FogVolumeConstantDensityInfo: public FogVolumeDensityInfo
	{
		DECLARE_PACKAGE_CLASS( FogVolumeConstantDensityInfo, FogVolumeDensityInfo, Engine )

	public:
	};

	class FogVolumeLinearHalfspaceDensityComponent: public FogVolumeDensityComponent
	{
		DECLARE_PACKAGE_CLASS( FogVolumeLinearHalfspaceDensityComponent, FogVolumeDensityComponent, Engine )

	public:

		Float PlaneDistanceFactor; //offset = 120, size = 4
		Plane HalfspacePlane; //offset = 124, size = 16
	};

	class FogVolumeLinearHalfspaceDensityInfo: public FogVolumeDensityInfo
	{
		DECLARE_PACKAGE_CLASS( FogVolumeLinearHalfspaceDensityInfo, FogVolumeDensityInfo, Engine )

	public:
	};

	class FogVolumeSphericalDensityComponent: public FogVolumeDensityComponent
	{
		DECLARE_PACKAGE_CLASS( FogVolumeSphericalDensityComponent, FogVolumeDensityComponent, Engine )

	public:

		Float MaxDensity; //offset = 120, size = 4
		Vector SphereCenter; //offset = 124, size = 12
		Float SphereRadius; //offset = 136, size = 4
		DrawLightRadiusComponent* PreviewSphereRadius; //offset = 140, size = 4
	};

	class FogVolumeSphericalDensityInfo: public FogVolumeDensityInfo
	{
		DECLARE_PACKAGE_CLASS( FogVolumeSphericalDensityInfo, FogVolumeDensityInfo, Engine )

	public:
	};

	struct BioTrackKey
	{
		Float fTime; //offset = 0, size = 4
		Name KeyName; //offset = 4, size = 8
	};

	class BioInterpTrack: public InterpTrack
	{
		DECLARE_PACKAGE_CLASS( BioInterpTrack, InterpTrack, Engine )

	public:

		Array<BioTrackKey> m_aTrackKeys; //offset = 88, size = 12
		Int m_nCurrentKey; //offset = 100, size = 4
		Int m_nNextKey; //offset = 104, size = 4

		String GetNewTrackSubMenuName();
		String KeyDataDisplayName();
		String KeyDataArrayName();
		String NewKeyDefaultName();
		Bool AllowKeyNaming();
	};

	class InterpTrackInst: public Object
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInst, Object, Engine )

	public:
	};

	class BioInterpTrackInst: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( BioInterpTrackInst, InterpTrackInst, Engine )

	public:

		Float m_fLastUpdatePosition; //offset = 60, size = 4
	};

	class InterpFilter: public Object
	{
		DECLARE_PACKAGE_CLASS( InterpFilter, Object, Engine )

	public:

		String Caption; //offset = 60, size = 12
	};

	class InterpFilter_Classes: public InterpFilter
	{
		DECLARE_PACKAGE_CLASS( InterpFilter_Classes, InterpFilter, Engine )

	public:

		Class* ClassToFilterBy; //offset = 72, size = 4
	};

	struct InterpEdSelKey
	{
		InterpGroup* Group; //offset = 0, size = 4
		Int TrackIndex; //offset = 4, size = 4
		Int KeyIndex; //offset = 8, size = 4
		Float UnsnappedPosition; //offset = 12, size = 4
	};

	class InterpGroup: public Object
	{
		DECLARE_PACKAGE_CLASS( InterpGroup, Object, Engine )

	public:

		Pointer VfTable_FInterpEdInputInterface; //offset = 60, size = 4
		Array<InterpTrack*> InterpTracks; //offset = 64, size = 12
		Name GroupName; //offset = 76, size = 8
		Color GroupColor; //offset = 84, size = 4
		Array<AnimSet*> GroupAnimSets; //offset = 88, size = 12
		Bool bCollapsed: 1; //offset = 100, size = 4
		Bool bVisible: 1; //offset = 100, size = 4
		Int BioForcedLodModel; //offset = 104, size = 4
		Bool bDontPrime: 1; //offset = 108, size = 4
		Bool bIsFolder: 1; //offset = 108, size = 4
		Bool bIsParented: 1; //offset = 108, size = 4
	};

	class InterpFilter_Custom: public InterpFilter
	{
		DECLARE_PACKAGE_CLASS( InterpFilter_Custom, InterpFilter, Engine )

	public:

		Array<InterpGroup*> GroupsToInclude; //offset = 72, size = 12
	};

	class InterpGroupDirector: public InterpGroup
	{
		DECLARE_PACKAGE_CLASS( InterpGroupDirector, InterpGroup, Engine )

	public:
	};

	class InterpGroupInst: public Object
	{
		DECLARE_PACKAGE_CLASS( InterpGroupInst, Object, Engine )

	public:

		InterpGroup* Group; //offset = 60, size = 4
		Actor* GroupActor; //offset = 64, size = 4
		Array<InterpTrackInst*> TrackInst; //offset = 68, size = 12
	};

	class InterpGroupInstDirector: public InterpGroupInst
	{
		DECLARE_PACKAGE_CLASS( InterpGroupInstDirector, InterpGroupInst, Engine )

	public:
	};

	class InterpTrackFloatBase: public InterpTrack
	{
		DECLARE_PACKAGE_CLASS( InterpTrackFloatBase, InterpTrack, Engine )

	public:

		InterpCurveFloat FloatTrack; //offset = 88, size = 16
		Float CurveTension; //offset = 104, size = 4
	};

	struct AnimControlTrackKey
	{
		Float StartTime; //offset = 0, size = 4
		Name AnimSeqName; //offset = 4, size = 8
		Float AnimStartOffset; //offset = 12, size = 4
		Float AnimEndOffset; //offset = 16, size = 4
		Float AnimPlayRate; //offset = 20, size = 4
		Bool bLooping: 1; //offset = 24, size = 4
		Bool bReverse: 1; //offset = 24, size = 4
	};

	class InterpTrackAnimControl: public InterpTrackFloatBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackAnimControl, InterpTrackFloatBase, Engine )

	public:

		Array<AnimSet*> AnimSets; //offset = 108, size = 12
		Name SlotName; //offset = 120, size = 8
		Array<AnimControlTrackKey> AnimSeqs; //offset = 128, size = 12
	};

	class InterpTrackVectorBase: public InterpTrack
	{
		DECLARE_PACKAGE_CLASS( InterpTrackVectorBase, InterpTrack, Engine )

	public:

		InterpCurveVector VectorTrack; //offset = 88, size = 16
		Float CurveTension; //offset = 104, size = 4
	};

	class InterpTrackColorProp: public InterpTrackVectorBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackColorProp, InterpTrackVectorBase, Engine )

	public:

		Name PropertyName; //offset = 108, size = 8
	};

	class InterpTrackColorScale: public InterpTrackVectorBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackColorScale, InterpTrackVectorBase, Engine )

	public:
	};

	struct DirectorTrackCut
	{
		Float Time; //offset = 0, size = 4
		Float TransitionTime; //offset = 4, size = 4
		Name TargetCamGroup; //offset = 8, size = 8
	};

	class InterpTrackDirector: public InterpTrack
	{
		DECLARE_PACKAGE_CLASS( InterpTrackDirector, InterpTrack, Engine )

	public:

		Array<DirectorTrackCut> CutTrack; //offset = 88, size = 12
	};

	struct EventTrackKey
	{
		Float Time; //offset = 0, size = 4
		Name EventName; //offset = 4, size = 8
	};

	class InterpTrackEvent: public InterpTrack
	{
		DECLARE_PACKAGE_CLASS( InterpTrackEvent, InterpTrack, Engine )

	public:

		Array<EventTrackKey> EventTrack; //offset = 88, size = 12
		Bool bFireEventsWhenForwards: 1; //offset = 100, size = 4
		Bool bFireEventsWhenBackwards: 1; //offset = 100, size = 4
		Bool bFireEventsWhenJumpingForwards: 1; //offset = 100, size = 4
	};

	enum EBioAutoSetFXAnimSeqTrack
	{
		FaceFXAnimSeqTrack_Unset,
	};

	enum EBioAutoSetFXAnimGroupTrack
	{
		FaceFXAnimGroupTrack_Unset,
	};

	enum EBioAutoSetFXAnimTrack
	{
		FaceFXAnimTrack_Unset,
	};

	struct Override_AnimSet
	{
		FaceFXAnimSet* fxaAnimSet; //offset = 0, size = 4
		Byte eAnimSequence; //offset = 4, size = 1
		FaceFXAnimSet* pBioMaleAnimSet; //offset = 8, size = 4
		FaceFXAnimSet* pBioFemaleAnimSet; //offset = 12, size = 4
		Array<FaceFXAnimSet*> aBioMaleSets; //offset = 16, size = 12
		Array<FaceFXAnimSet*> aBioFemaleSets; //offset = 28, size = 12
	};

	struct Override_Asset
	{
		FaceFXAsset* fxAsset; //offset = 0, size = 4
		Byte eAnimGroup; //offset = 4, size = 1
		Byte eAnimSeq; //offset = 5, size = 1
	};

	struct Override
	{
		Override_Asset Asset_Override; //offset = 0, size = 8
		Override_AnimSet AnimSet_Override; //offset = 8, size = 40
		Int iKeyIndex; //offset = 48, size = 4
	};

	struct FaceFXTrackKey
	{
		Float StartTime; //offset = 0, size = 4
		String FaceFXGroupName; //offset = 4, size = 12
		String FaceFXSeqName; //offset = 16, size = 12
	};

	class InterpTrackFaceFX: public InterpTrack
	{
		DECLARE_PACKAGE_CLASS( InterpTrackFaceFX, InterpTrack, Engine )

	public:

		Array<FaceFXAnimSet*> FaceFXAnimSets; //offset = 88, size = 12
		Array<FaceFXAnimSet*> m_aBioMaleAnimSets; //offset = 100, size = 12
		Array<FaceFXAnimSet*> m_aBioFemaleAnimSets; //offset = 112, size = 12
		Array<FaceFXTrackKey> FaceFXSeqs; //offset = 124, size = 12
		FaceFXAsset* CachedActorFXAsset; //offset = 136, size = 4
		Override_Asset OverrideAsset; //offset = 140, size = 8
		Override_AnimSet OverrideAnimSet; //offset = 148, size = 40
		String SpeakerTag; //offset = 188, size = 12
		Bool bOverrideDirty: 1; //offset = 200, size = 4
	};

	class InterpTrackFade: public InterpTrackFloatBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackFade, InterpTrackFloatBase, Engine )

	public:
	};

	class InterpTrackFloatMaterialParam: public InterpTrackFloatBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackFloatMaterialParam, InterpTrackFloatBase, Engine )

	public:

		Name ParamName; //offset = 108, size = 8
	};

	class InterpTrackFloatParticleParam: public InterpTrackFloatBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackFloatParticleParam, InterpTrackFloatBase, Engine )

	public:

		Name ParamName; //offset = 108, size = 8
	};

	class InterpTrackFloatProp: public InterpTrackFloatBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackFloatProp, InterpTrackFloatBase, Engine )

	public:

		Name PropertyName; //offset = 108, size = 8
	};

	class InterpTrackInstAnimControl: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstAnimControl, InterpTrackInst, Engine )

	public:

		Float LastUpdatePosition; //offset = 60, size = 4
		Array<Texture2D*> ModifiedTextures; //offset = 64, size = 12
	};

	class InterpTrackInstProperty: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstProperty, InterpTrackInst, Engine )

	public:

		Function* PropertyUpdateCallback; //offset = 60, size = 4
		Object* PropertyOuterObjectInst; //offset = 64, size = 4
	};

	class InterpTrackInstColorProp: public InterpTrackInstProperty
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstColorProp, InterpTrackInstProperty, Engine )

	public:

		Pointer ColorProp; //offset = 68, size = 4
		Color ResetColor; //offset = 72, size = 4
	};

	class InterpTrackInstColorScale: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstColorScale, InterpTrackInst, Engine )

	public:
	};

	class InterpTrackInstDirector: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstDirector, InterpTrackInst, Engine )

	public:

		Actor* OldViewTarget; //offset = 60, size = 4
	};

	class InterpTrackInstEvent: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstEvent, InterpTrackInst, Engine )

	public:

		Float LastUpdatePosition; //offset = 60, size = 4
	};

	class InterpTrackInstFaceFX: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstFaceFX, InterpTrackInst, Engine )

	public:

		Bool bFirstUpdate: 1; //offset = 60, size = 4
		Float LastUpdatePosition; //offset = 64, size = 4
	};

	class InterpTrackInstFade: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstFade, InterpTrackInst, Engine )

	public:
	};

	class InterpTrackInstFloatMaterialParam: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstFloatMaterialParam, InterpTrackInst, Engine )

	public:

		Float ResetFloat; //offset = 60, size = 4
	};

	class InterpTrackInstFloatParticleParam: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstFloatParticleParam, InterpTrackInst, Engine )

	public:

		Float ResetFloat; //offset = 60, size = 4
	};

	class InterpTrackInstFloatProp: public InterpTrackInstProperty
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstFloatProp, InterpTrackInstProperty, Engine )

	public:

		Pointer FloatProp; //offset = 68, size = 4
		Float ResetFloat; //offset = 72, size = 4
	};

	class InterpTrackInstMorphWeight: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstMorphWeight, InterpTrackInst, Engine )

	public:
	};

	class InterpTrackInstMove: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstMove, InterpTrackInst, Engine )

	public:

		Byte m_nSavedPhysicsMode; //offset = 60, size = 1
		Vector ResetLocation; //offset = 64, size = 12
		Rotator ResetRotation; //offset = 76, size = 12
		Matrix InitialTM; //offset = 96, size = 64
		Quat InitialQuat; //offset = 160, size = 16
	};

	class InterpTrackInstSkelControlScale: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstSkelControlScale, InterpTrackInst, Engine )

	public:
	};

	class InterpTrackInstSlomo: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstSlomo, InterpTrackInst, Engine )

	public:

		Float OldTimeDilation; //offset = 60, size = 4
	};

	class InterpTrackInstSound: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstSound, InterpTrackInst, Engine )

	public:

		Float LastUpdatePosition; //offset = 60, size = 4
		AudioComponent* PlayAudioComp; //offset = 64, size = 4
	};

	class InterpTrackInstToggle: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstToggle, InterpTrackInst, Engine )

	public:

		Byte Action; //offset = 60, size = 1
		Float LastUpdatePosition; //offset = 64, size = 4
		Bool bSavedActiveState: 1; //offset = 68, size = 4
	};

	class InterpTrackInstVectorMaterialParam: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstVectorMaterialParam, InterpTrackInst, Engine )

	public:

		Vector ResetVector; //offset = 60, size = 12
	};

	class InterpTrackInstVectorProp: public InterpTrackInstProperty
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstVectorProp, InterpTrackInstProperty, Engine )

	public:

		Pointer VectorProp; //offset = 68, size = 4
		Vector ResetVector; //offset = 72, size = 12
	};

	class InterpTrackMorphWeight: public InterpTrackFloatBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackMorphWeight, InterpTrackFloatBase, Engine )

	public:

		Name MorphNodeName; //offset = 108, size = 8
	};

	enum EInterpTrackMoveRotMode
	{
		IMR_Keyframed,
		IMR_LookAtGroup,
	};

	enum EInterpTrackMoveFrame
	{
		IMF_World,
		IMF_RelativeToInitial,
	};

	struct InterpLookupPoint
	{
		Name GroupName; //offset = 0, size = 8
		Float Time; //offset = 8, size = 4
	};

	struct InterpLookupTrack
	{
		Array<InterpLookupPoint> Points; //offset = 0, size = 12
	};

	class InterpTrackMove: public InterpTrack
	{
		DECLARE_PACKAGE_CLASS( InterpTrackMove, InterpTrack, Engine )

	public:

		InterpCurveVector PosTrack; //offset = 88, size = 16
		InterpCurveVector EulerTrack; //offset = 104, size = 16
		InterpLookupTrack LookupTrack; //offset = 120, size = 12
		Name LookAtGroupName; //offset = 132, size = 8
		Float LinCurveTension; //offset = 140, size = 4
		Float AngCurveTension; //offset = 144, size = 4
		Bool bUseQuatInterpolation: 1; //offset = 148, size = 4
		Bool bShowArrowAtKeys: 1; //offset = 148, size = 4
		Bool bDisableMovement: 1; //offset = 148, size = 4
		Bool bShowTranslationOnCurveEd: 1; //offset = 148, size = 4
		Bool bShowRotationOnCurveEd: 1; //offset = 148, size = 4
		Bool bHide3DTrack: 1; //offset = 148, size = 4
		Byte MoveFrame; //offset = 152, size = 1
		Byte RotMode; //offset = 153, size = 1
	};

	class InterpTrackSkelControlScale: public InterpTrackFloatBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackSkelControlScale, InterpTrackFloatBase, Engine )

	public:

		Name SkelControlName; //offset = 108, size = 8
	};

	class InterpTrackSlomo: public InterpTrackFloatBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackSlomo, InterpTrackFloatBase, Engine )

	public:
	};

	struct SoundTrackKey
	{
		Float Time; //offset = 0, size = 4
		Float Volume; //offset = 4, size = 4
		Float Pitch; //offset = 8, size = 4
		SoundCue* Sound; //offset = 12, size = 4
	};

	class InterpTrackSound: public InterpTrackVectorBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackSound, InterpTrackVectorBase, Engine )

	public:

		Array<SoundTrackKey> Sounds; //offset = 108, size = 12
		Bool bContinueSoundOnMatineeEnd: 1; //offset = 120, size = 4
		Bool bSuppressSubtitles: 1; //offset = 120, size = 4
		Bool bRequireActor: 1; //offset = 120, size = 4
		Bool m_bBioRequiresPreload: 1; //offset = 120, size = 4
	};

	enum ETrackToggleAction
	{
		ETTA_Off,
		ETTA_On,
		ETTA_Toggle,
	};

	struct ToggleTrackKey
	{
		Float Time; //offset = 0, size = 4
		Byte ToggleAction; //offset = 4, size = 1
	};

	class InterpTrackToggle: public InterpTrack
	{
		DECLARE_PACKAGE_CLASS( InterpTrackToggle, InterpTrack, Engine )

	public:

		Array<ToggleTrackKey> ToggleTrack; //offset = 88, size = 12
		Bool bActivateSystemEachUpdate: 1; //offset = 100, size = 4
		Bool bFireEventsWhenForwards: 1; //offset = 100, size = 4
		Bool bFireEventsWhenBackwards: 1; //offset = 100, size = 4
		Bool bFireEventsWhenJumpingForwards: 1; //offset = 100, size = 4
	};

	class InterpTrackVectorMaterialParam: public InterpTrackVectorBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackVectorMaterialParam, InterpTrackVectorBase, Engine )

	public:

		Name ParamName; //offset = 108, size = 8
	};

	class InterpTrackVectorProp: public InterpTrackVectorBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackVectorProp, InterpTrackVectorBase, Engine )

	public:

		Name PropertyName; //offset = 108, size = 8
	};

	class BioMaterialExpressionEffectMatBaseProperty: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( BioMaterialExpressionEffectMatBaseProperty, MaterialExpression, Engine )

	public:

		Byte BaseProperty; //offset = 88, size = 1
		MaterialExpression* Input; //offset = 92, size = 4
	};

	class MaterialExpressionParameter: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionParameter, MaterialExpression, Engine )

	public:

		Name ParameterName; //offset = 88, size = 8
		Guid ExpressionGUID; //offset = 96, size = 16
	};

	class MaterialExpressionScalarParameter: public MaterialExpressionParameter
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionScalarParameter, MaterialExpressionParameter, Engine )

	public:

		Float DefaultValue; //offset = 112, size = 4
	};

	class BioMaterialExpressionEffectMatFractionEnabled: public MaterialExpressionScalarParameter
	{
		DECLARE_PACKAGE_CLASS( BioMaterialExpressionEffectMatFractionEnabled, MaterialExpressionScalarParameter, Engine )

	public:
	};

	class MaterialInstance: public MaterialInterface
	{
		DECLARE_PACKAGE_CLASS( MaterialInstance, MaterialInterface, Engine )

	public:

		PhysicalMaterial* PhysMaterial; //offset = 88, size = 4
		MaterialInterface* Parent; //offset = 92, size = 4
		Bool bHasStaticPermutationResource: 1; //offset = 96, size = 4
		Bool ReentrantFlag: 1; //offset = 96, size = 4
		Bool bStaticPermutationDirty: 1; //offset = 96, size = 4
		Pointer StaticParameters[2]; //offset = 100, size = 4
		Pointer StaticPermutationResources[2]; //offset = 108, size = 4
		Pointer Resources[2]; //offset = 116, size = 4
		Array<Texture*> ReferencedTextures; //offset = 124, size = 12

		void ClearParameterValues();
		void SetFontParameterValue( Name ParameterName, Font* FontValue, Int FontPage );
		void SetEffectsMaterialFractionValue( Float Value );
		void SetEffectsMaterialNameValue( Name EffectName );
		void SetTextureParameterValue( Name ParameterName, Texture* Value );
		void SetScalarCurveParameterValue( Name ParameterName, InterpCurveFloat Value );
		void SetScalarParameterValue( Name ParameterName, Float Value );
		void SetVectorParameterValue( Name ParameterName, LinearColor Value );
		void SetParent( MaterialInterface* NewParent );
	};

	struct VectorParameterValue
	{
		Name ParameterName; //offset = 0, size = 8
		LinearColor ParameterValue; //offset = 8, size = 16
		Guid ExpressionGUID; //offset = 24, size = 16
	};

	struct TextureParameterValue
	{
		Name ParameterName; //offset = 0, size = 8
		Texture* ParameterValue; //offset = 8, size = 4
		Guid ExpressionGUID; //offset = 12, size = 16
	};

	struct ScalarParameterValue
	{
		Name ParameterName; //offset = 0, size = 8
		Float ParameterValue; //offset = 8, size = 4
		Guid ExpressionGUID; //offset = 12, size = 16
	};

	struct FontParameterValue
	{
		Name ParameterName; //offset = 0, size = 8
		Font* FontValue; //offset = 8, size = 4
		Int FontPage; //offset = 12, size = 4
		Guid ExpressionGUID; //offset = 16, size = 16
	};

	class MaterialInstanceConstant: public MaterialInstance
	{
		DECLARE_PACKAGE_CLASS( MaterialInstanceConstant, MaterialInstance, Engine )

	public:

		Array<FontParameterValue> FontParameterValues; //offset = 136, size = 12
		Array<VectorParameterValue> VectorParameterValues; //offset = 148, size = 12
		Array<ScalarParameterValue> ScalarParameterValues; //offset = 160, size = 12
		Array<TextureParameterValue> TextureParameterValues; //offset = 172, size = 12

		void ClearParameterValues();
		void SetFontParameterValue( Name ParameterName, Font* FontValue, Int FontPage );
		void SetVectorParameterValue( Name ParameterName, LinearColor Value );
		void SetTextureParameterValue( Name ParameterName, Texture* Value );
		void SetScalarParameterValue( Name ParameterName, Float Value );
		void SetParent( MaterialInterface* NewParent );
	};

	class BioMaterialInstanceConstant: public MaterialInstanceConstant
	{
		DECLARE_PACKAGE_CLASS( BioMaterialInstanceConstant, MaterialInstanceConstant, Engine )

	public:
	};

	class MaterialExpressionAbs: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionAbs, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
	};

	class MaterialExpressionAdd: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionAdd, MaterialExpression, Engine )

	public:

		ExpressionInput A; //offset = 88, size = 28
		ExpressionInput B; //offset = 116, size = 28
	};

	class MaterialExpressionAppendVector: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionAppendVector, MaterialExpression, Engine )

	public:

		ExpressionInput A; //offset = 88, size = 28
		ExpressionInput B; //offset = 116, size = 28
	};

	class MaterialExpressionBumpOffset: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionBumpOffset, MaterialExpression, Engine )

	public:

		ExpressionInput Coordinate; //offset = 88, size = 28
		ExpressionInput Height; //offset = 116, size = 28
		Float HeightRatio; //offset = 144, size = 4
		Float ReferencePlane; //offset = 148, size = 4
	};

	class MaterialExpressionCameraVector: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionCameraVector, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionCameraWorldPosition: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionCameraWorldPosition, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionCeil: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionCeil, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
	};

	class MaterialExpressionClamp: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionClamp, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
		ExpressionInput Min; //offset = 116, size = 28
		ExpressionInput Max; //offset = 144, size = 28
	};

	class MaterialExpressionComment: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionComment, MaterialExpression, Engine )

	public:

		Int PosX; //offset = 88, size = 4
		Int PosY; //offset = 92, size = 4
		Int SizeX; //offset = 96, size = 4
		Int SizeY; //offset = 100, size = 4
		String Text; //offset = 104, size = 12
	};

	class MaterialExpressionComponentMask: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionComponentMask, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
		Bool R: 1; //offset = 116, size = 4
		Bool G: 1; //offset = 116, size = 4
		Bool B: 1; //offset = 116, size = 4
		Bool A: 1; //offset = 116, size = 4
	};

	class MaterialExpressionCompound: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionCompound, MaterialExpression, Engine )

	public:

		Array<MaterialExpression*> MaterialExpressions; //offset = 88, size = 12
		String Caption; //offset = 100, size = 12
		Bool bExpanded: 1; //offset = 112, size = 4
	};

	class MaterialExpressionConstant: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionConstant, MaterialExpression, Engine )

	public:

		Float R; //offset = 88, size = 4
	};

	class MaterialExpressionConstant2Vector: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionConstant2Vector, MaterialExpression, Engine )

	public:

		Float R; //offset = 88, size = 4
		Float G; //offset = 92, size = 4
	};

	class MaterialExpressionConstant3Vector: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionConstant3Vector, MaterialExpression, Engine )

	public:

		Float R; //offset = 88, size = 4
		Float G; //offset = 92, size = 4
		Float B; //offset = 96, size = 4
	};

	class MaterialExpressionConstant4Vector: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionConstant4Vector, MaterialExpression, Engine )

	public:

		Float R; //offset = 88, size = 4
		Float G; //offset = 92, size = 4
		Float B; //offset = 96, size = 4
		Float A; //offset = 100, size = 4
	};

	class MaterialExpressionConstantClamp: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionConstantClamp, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
		Float Min; //offset = 116, size = 4
		Float Max; //offset = 120, size = 4
	};

	class MaterialExpressionCosine: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionCosine, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
		Float Period; //offset = 116, size = 4
	};

	class MaterialExpressionCrossProduct: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionCrossProduct, MaterialExpression, Engine )

	public:

		ExpressionInput A; //offset = 88, size = 28
		ExpressionInput B; //offset = 116, size = 28
	};

	class MaterialExpressionTextureSample: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionTextureSample, MaterialExpression, Engine )

	public:

		Texture* Texture; //offset = 88, size = 4
		ExpressionInput Coordinates; //offset = 92, size = 28
		Bool bDecompressNormalMap: 1; //offset = 120, size = 4
	};

	class MaterialExpressionDepthBiasBlend: public MaterialExpressionTextureSample
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionDepthBiasBlend, MaterialExpressionTextureSample, Engine )

	public:

		Bool bNormalize: 1; //offset = 124, size = 4
		Float BiasScale; //offset = 128, size = 4
		ExpressionInput Bias; //offset = 132, size = 28
	};

	class MaterialExpressionDepthBiasedAlpha: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionDepthBiasedAlpha, MaterialExpression, Engine )

	public:

		Bool bNormalize: 1; //offset = 88, size = 4
		Float BiasScale; //offset = 92, size = 4
		ExpressionInput Alpha; //offset = 96, size = 28
		ExpressionInput Bias; //offset = 124, size = 28
	};

	class MaterialExpressionDepthBiasedBlend: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionDepthBiasedBlend, MaterialExpression, Engine )

	public:

		Bool bNormalize: 1; //offset = 88, size = 4
		Float BiasScale; //offset = 92, size = 4
		ExpressionInput RGB; //offset = 96, size = 28
		ExpressionInput Alpha; //offset = 124, size = 28
		ExpressionInput Bias; //offset = 152, size = 28
	};

	class MaterialExpressionDesaturation: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionDesaturation, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
		ExpressionInput Percent; //offset = 116, size = 28
		LinearColor LuminanceFactors; //offset = 144, size = 16
	};

	class MaterialExpressionDestColor: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionDestColor, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionDestDepth: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionDestDepth, MaterialExpression, Engine )

	public:

		Bool bNormalize: 1; //offset = 88, size = 4
	};

	class MaterialExpressionDivide: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionDivide, MaterialExpression, Engine )

	public:

		ExpressionInput A; //offset = 88, size = 28
		ExpressionInput B; //offset = 116, size = 28
	};

	class MaterialExpressionDotProduct: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionDotProduct, MaterialExpression, Engine )

	public:

		ExpressionInput A; //offset = 88, size = 28
		ExpressionInput B; //offset = 116, size = 28
	};

	class MaterialExpressionFlipBookSample: public MaterialExpressionTextureSample
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionFlipBookSample, MaterialExpressionTextureSample, Engine )

	public:
	};

	class MaterialExpressionFloor: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionFloor, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
	};

	class MaterialExpressionFontSample: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionFontSample, MaterialExpression, Engine )

	public:

		Font* Font; //offset = 88, size = 4
		Int FontTexturePage; //offset = 92, size = 4
	};

	class MaterialExpressionFontSampleParameter: public MaterialExpressionFontSample
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionFontSampleParameter, MaterialExpressionFontSample, Engine )

	public:

		Name ParameterName; //offset = 96, size = 8
		Guid ExpressionGUID; //offset = 104, size = 16
	};

	class MaterialExpressionFrac: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionFrac, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
	};

	class MaterialExpressionFresnel: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionFresnel, MaterialExpression, Engine )

	public:

		Float Exponent; //offset = 88, size = 4
		ExpressionInput Normal; //offset = 92, size = 28
	};

	class MaterialExpressionIf: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionIf, MaterialExpression, Engine )

	public:

		ExpressionInput A; //offset = 88, size = 28
		ExpressionInput B; //offset = 116, size = 28
		ExpressionInput AGreaterThanB; //offset = 144, size = 28
		ExpressionInput AEqualsB; //offset = 172, size = 28
		ExpressionInput ALessThanB; //offset = 200, size = 28
	};

	class MaterialExpressionLensFlareIntensity: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionLensFlareIntensity, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionLensFlareOcclusion: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionLensFlareOcclusion, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionLensFlareRadialDistance: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionLensFlareRadialDistance, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionLensFlareRayDistance: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionLensFlareRayDistance, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionLensFlareSourceDistance: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionLensFlareSourceDistance, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionLightVector: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionLightVector, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionLinearInterpolate: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionLinearInterpolate, MaterialExpression, Engine )

	public:

		ExpressionInput A; //offset = 88, size = 28
		ExpressionInput B; //offset = 116, size = 28
		ExpressionInput Alpha; //offset = 144, size = 28
	};

	class MaterialExpressionMeshEmitterVertexColor: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionMeshEmitterVertexColor, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionMeshSubUV: public MaterialExpressionTextureSample
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionMeshSubUV, MaterialExpressionTextureSample, Engine )

	public:
	};

	class MaterialExpressionMultiply: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionMultiply, MaterialExpression, Engine )

	public:

		ExpressionInput A; //offset = 88, size = 28
		ExpressionInput B; //offset = 116, size = 28
	};

	class MaterialExpressionNormalize: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionNormalize, MaterialExpression, Engine )

	public:

		ExpressionInput VectorInput; //offset = 88, size = 28
	};

	class MaterialExpressionOneMinus: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionOneMinus, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
	};

	class MaterialExpressionPanner: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionPanner, MaterialExpression, Engine )

	public:

		ExpressionInput Coordinate; //offset = 88, size = 28
		ExpressionInput Time; //offset = 116, size = 28
		Float SpeedX; //offset = 144, size = 4
		Float SpeedY; //offset = 148, size = 4
	};

	class MaterialExpressionParticleSubUV: public MaterialExpressionTextureSample
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionParticleSubUV, MaterialExpressionTextureSample, Engine )

	public:
	};

	class MaterialExpressionPixelDepth: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionPixelDepth, MaterialExpression, Engine )

	public:

		Bool bNormalize: 1; //offset = 88, size = 4
	};

	class MaterialExpressionPower: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionPower, MaterialExpression, Engine )

	public:

		ExpressionInput Base; //offset = 88, size = 28
		ExpressionInput Exponent; //offset = 116, size = 28
	};

	class MaterialExpressionReflectionVector: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionReflectionVector, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionRotator: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionRotator, MaterialExpression, Engine )

	public:

		ExpressionInput Coordinate; //offset = 88, size = 28
		ExpressionInput Time; //offset = 116, size = 28
		Float CenterX; //offset = 144, size = 4
		Float CenterY; //offset = 148, size = 4
		Float Speed; //offset = 152, size = 4
	};

	class MaterialExpressionSceneDepth: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionSceneDepth, MaterialExpression, Engine )

	public:

		ExpressionInput Coordinates; //offset = 88, size = 28
		Bool bNormalize: 1; //offset = 116, size = 4
	};

	enum ESceneTextureType
	{
		SceneTex_Lighting,
	};

	class MaterialExpressionSceneTexture: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionSceneTexture, MaterialExpression, Engine )

	public:

		ExpressionInput Coordinates; //offset = 88, size = 28
		Byte SceneTextureType; //offset = 116, size = 1
		Bool ScreenAlign: 1; //offset = 120, size = 4
	};

	class MaterialExpressionScreenPosition: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionScreenPosition, MaterialExpression, Engine )

	public:

		Bool ScreenAlign: 1; //offset = 88, size = 4
	};

	class MaterialExpressionSine: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionSine, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
		Float Period; //offset = 116, size = 4
	};

	class MaterialExpressionSquareRoot: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionSquareRoot, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
	};

	class MaterialExpressionStaticComponentMaskParameter: public MaterialExpressionParameter
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionStaticComponentMaskParameter, MaterialExpressionParameter, Engine )

	public:

		ExpressionInput Input; //offset = 112, size = 28
		Bool DefaultR: 1; //offset = 140, size = 4
		Bool DefaultG: 1; //offset = 140, size = 4
		Bool DefaultB: 1; //offset = 140, size = 4
		Bool DefaultA: 1; //offset = 140, size = 4
		Pointer InstanceOverride; //offset = 144, size = 4
	};

	class MaterialExpressionStaticSwitchParameter: public MaterialExpressionParameter
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionStaticSwitchParameter, MaterialExpressionParameter, Engine )

	public:

		Bool DefaultValue: 1; //offset = 112, size = 4
		Bool ExtendedCaptionDisplay: 1; //offset = 112, size = 4
		ExpressionInput A; //offset = 116, size = 28
		ExpressionInput B; //offset = 144, size = 28
		Pointer InstanceOverride; //offset = 172, size = 4
	};

	class MaterialExpressionSubtract: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionSubtract, MaterialExpression, Engine )

	public:

		ExpressionInput A; //offset = 88, size = 28
		ExpressionInput B; //offset = 116, size = 28
	};

	class MaterialExpressionTextureCoordinate: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionTextureCoordinate, MaterialExpression, Engine )

	public:

		Int CoordinateIndex; //offset = 88, size = 4
		Float Tiling; //offset = 92, size = 4
		Float UTiling; //offset = 96, size = 4
		Float VTiling; //offset = 100, size = 4
	};

	class MaterialExpressionTextureSampleParameter: public MaterialExpressionTextureSample
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionTextureSampleParameter, MaterialExpressionTextureSample, Engine )

	public:

		Name ParameterName; //offset = 124, size = 8
		Guid ExpressionGUID; //offset = 132, size = 16
	};

	class MaterialExpressionTextureSampleParameter2D: public MaterialExpressionTextureSampleParameter
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionTextureSampleParameter2D, MaterialExpressionTextureSampleParameter, Engine )

	public:
	};

	class MaterialExpressionTextureSampleParameterCube: public MaterialExpressionTextureSampleParameter
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionTextureSampleParameterCube, MaterialExpressionTextureSampleParameter, Engine )

	public:
	};

	class MaterialExpressionTextureSampleParameterMovie: public MaterialExpressionTextureSampleParameter
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionTextureSampleParameterMovie, MaterialExpressionTextureSampleParameter, Engine )

	public:
	};

	class MaterialExpressionTime: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionTime, MaterialExpression, Engine )

	public:

		Bool bIgnorePause: 1; //offset = 88, size = 4
	};

	enum EMaterialVectorCoordTransform
	{
		TRANSFORM_World,
		TRANSFORM_View,
	};

	class MaterialExpressionTransform: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionTransform, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
		Byte TransformType; //offset = 116, size = 1
	};

	enum EMaterialPositionTransform
	{
		TRANSFORMPOS_World,
	};

	class MaterialExpressionTransformPosition: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionTransformPosition, MaterialExpression, Engine )

	public:

		ExpressionInput Input; //offset = 88, size = 28
		Byte TransformType; //offset = 116, size = 1
	};

	class MaterialExpressionVectorParameter: public MaterialExpressionParameter
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionVectorParameter, MaterialExpressionParameter, Engine )

	public:

		LinearColor DefaultValue; //offset = 112, size = 16
	};

	class MaterialExpressionVertexColor: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionVertexColor, MaterialExpression, Engine )

	public:
	};

	class MaterialExpressionWorldPosition: public MaterialExpression
	{
		DECLARE_PACKAGE_CLASS( MaterialExpressionWorldPosition, MaterialExpression, Engine )

	public:
	};

	struct VectorParameterValueOverTime
	{
		LinearColor ParameterValue; //offset = 40, size = 16
		InterpCurveVector ParameterValueCurve; //offset = 56, size = 16
	};

	struct TextureParameterValueOverTime
	{
		Texture* ParameterValue; //offset = 40, size = 4
	};

	struct ScalarParameterValueOverTime
	{
		Float ParameterValue; //offset = 40, size = 4
		InterpCurveFloat ParameterValueCurve; //offset = 44, size = 16
	};

	struct FontParameterValueOverTime
	{
		Font* FontValue; //offset = 40, size = 4
		Int FontPage; //offset = 44, size = 4
	};

	struct ParameterValueOverTime
	{
		Guid ExpressionGUID; //offset = 0, size = 16
		Float StartTime; //offset = 16, size = 4
		Name ParameterName; //offset = 20, size = 8
		Bool bLoop: 1; //offset = 28, size = 4
		Bool bAutoActivate: 1; //offset = 28, size = 4
		Float CycleTime; //offset = 32, size = 4
		Bool bNormalizeTime: 1; //offset = 36, size = 4
	};

	class MaterialInstanceTimeVarying: public MaterialInstance
	{
		DECLARE_PACKAGE_CLASS( MaterialInstanceTimeVarying, MaterialInstance, Engine )

	public:

		Bool bAutoActivateAll: 1; //offset = 136, size = 4
		Array<FontParameterValueOverTime> FontParameterValues; //offset = 140, size = 12
		Array<ScalarParameterValueOverTime> ScalarParameterValues; //offset = 152, size = 12
		Array<TextureParameterValueOverTime> TextureParameterValues; //offset = 164, size = 12
		Array<VectorParameterValueOverTime> VectorParameterValues; //offset = 176, size = 12

		void ClearParameterValues();
		void SetFontParameterValue( Name ParameterName, Font* FontValue, Int FontPage );
		void SetVectorStartTime( Name ParameterName, Float Value );
		void SetVectorCurveParameterValue( Name ParameterName, InterpCurveVector Value );
		void SetVectorParameterValue( Name ParameterName, LinearColor Value );
		void SetTextureParameterValue( Name ParameterName, Texture* Value );
		void SetScalarStartTime( Name ParameterName, Float Value );
		void SetScalarCurveParameterValue( Name ParameterName, InterpCurveFloat Value );
		void SetScalarParameterValue( Name ParameterName, Float Value );
		void SetParent( MaterialInterface* NewParent );
	};

	class DistributionFloatParticleParameter: public DistributionFloatParameterBase
	{
		DECLARE_PACKAGE_CLASS( DistributionFloatParticleParameter, DistributionFloatParameterBase, Engine )

	public:
	};

	class DistributionVectorParticleParameter: public DistributionVectorParameterBase
	{
		DECLARE_PACKAGE_CLASS( DistributionVectorParticleParameter, DistributionVectorParameterBase, Engine )

	public:
	};

	class Emitter: public Actor
	{
		DECLARE_PACKAGE_CLASS( Emitter, Actor, Engine )

	public:

		ParticleSystemComponent* ParticleSystemComponent; //offset = 508, size = 4
		Bool bDestroyOnSystemFinish: 1; //offset = 512, size = 4
		Bool bNoVFXSound: 1; //offset = 512, size = 4
		Bool bCurrentlyActive: 1; //offset = 512, size = 4

		void OnSetParticleSysParam( SeqAct_SetParticleSysParam* Action, Int idx, Int ParamIdx );
		void SetActorParameter( Name ParameterName, Actor* Param );
		void SetExtColorParameter( Name ParameterName, Byte Red, Byte Green, Byte Blue, Byte Alpha, Color C );
		void SetColorParameter( Name ParameterName, Color Param );
		void SetVectorParameter( Name ParameterName, Vector Param );
		void SetFloatParameter( Name ParameterName, Float Param );
		void OnToggle( SeqAct_Toggle* Action );
		void OnParticleSystemFinished( ParticleSystemComponent* FinishedComponent );
		void ReplicatedEvent( Name VarName );
		void PostBeginPlay();
		void ResetPSC();
		void SetTemplate( ParticleSystem* NewTemplate, Bool bDestroyOnFinish );
	};

	enum EParticleSourceSelectionMethod
	{
		EPSSM_Random,
		EPSSM_Sequential,
	};

	enum EModuleType
	{
		EPMT_General,
		EPMT_TypeData,
		EPMT_Beam,
	};

	struct ParticleCurvePair
	{
		String CurveName; //offset = 0, size = 12
		Object* CurveObject; //offset = 12, size = 4
	};

	class ParticleModule: public Object
	{
		DECLARE_PACKAGE_CLASS( ParticleModule, Object, Engine )

	public:

		Bool bSpawnModule: 1; //offset = 60, size = 4
		Bool bUpdateModule: 1; //offset = 60, size = 4
		Bool bCurvesAsColor: 1; //offset = 60, size = 4
		Bool b3DDrawMode: 1; //offset = 60, size = 4
		Bool bSupported3DDrawMode: 1; //offset = 60, size = 4
		Bool bEnabled: 1; //offset = 60, size = 4
		Bool bEditable: 1; //offset = 60, size = 4
		Bool bSpawnRateModule: 1; //offset = 60, size = 4
		Color ModuleEditorColor; //offset = 64, size = 4
	};

	class ParticleLODLevel: public Object
	{
		DECLARE_PACKAGE_CLASS( ParticleLODLevel, Object, Engine )

	public:

		Int Level; //offset = 60, size = 4
		Int LevelSetting; //offset = 64, size = 4
		Bool bEnabled: 1; //offset = 68, size = 4
		Bool ConvertedModules: 1; //offset = 68, size = 4
		ParticleModuleRequired* RequiredModule; //offset = 72, size = 4
		Array<ParticleModule*> Modules; //offset = 76, size = 12
		ParticleModule* TypeDataModule; //offset = 88, size = 4
		Array<ParticleModuleSpawnBase*> SpawningModules; //offset = 92, size = 12
		Array<ParticleModule*> SpawnModules; //offset = 104, size = 12
		Array<ParticleModule*> UpdateModules; //offset = 116, size = 12
		Array<ParticleModuleOrbit*> OrbitModules; //offset = 128, size = 12
		Int PeakActiveParticles; //offset = 140, size = 4
		Array<ParticleModule*> SpawnRateModules; //offset = 144, size = 12
	};

	enum EEmitterRenderMode
	{
		ERM_Normal,
		ERM_Point,
		ERM_Cross,
	};

	enum EParticleSubUVInterpMethod
	{
		PSUVIM_None,
		PSUVIM_Linear,
		PSUVIM_Linear_Blend,
	};

	enum EParticleBurstMethod
	{
		EPBM_Instant,
		EPBM_Interpolated,
	};

	struct AutoGenLODParam
	{
		Int nLabel; //offset = 0, size = 4
		Float fPercentage; //offset = 4, size = 4
		Float fDistance; //offset = 8, size = 4
	};

	struct ParticleBurst
	{
		Int Count; //offset = 0, size = 4
		Int CountLow; //offset = 4, size = 4
		Float Time; //offset = 8, size = 4
	};

	class ParticleEmitter: public Object
	{
		DECLARE_PACKAGE_CLASS( ParticleEmitter, Object, Engine )

	public:

		Name EmitterName; //offset = 60, size = 8
		Bool UseLocalSpace: 1; //offset = 68, size = 4
		Bool KillOnDeactivate: 1; //offset = 68, size = 4
		Bool bKillOnCompleted: 1; //offset = 68, size = 4
		Bool ScaleUV: 1; //offset = 68, size = 4
		Bool DirectUV: 1; //offset = 68, size = 4
		Bool bEnabled: 1; //offset = 68, size = 4
		Bool ConvertedModules: 1; //offset = 68, size = 4
		RawDistributionFloat SpawnRate; //offset = 72, size = 28
		Float EmitterDuration; //offset = 100, size = 4
		Int EmitterLoops; //offset = 104, size = 4
		ParticleModuleRequired* RequiredModule; //offset = 108, size = 4
		Byte ParticleBurstMethod; //offset = 112, size = 1
		Byte InterpolationMethod; //offset = 113, size = 1
		Byte EmitterRenderMode; //offset = 114, size = 1
		Array<ParticleBurst> BurstList; //offset = 116, size = 12
		Int SubImages_Horizontal; //offset = 128, size = 4
		Int SubImages_Vertical; //offset = 132, size = 4
		Float RandomImageTime; //offset = 136, size = 4
		Int RandomImageChanges; //offset = 140, size = 4
		Int SubUVDataOffset; //offset = 144, size = 4
		Color EmitterEditorColor; //offset = 148, size = 4
		Array<ParticleLODLevel*> LODLevels; //offset = 152, size = 12
		Array<ParticleModule*> Modules; //offset = 164, size = 12
		ParticleModule* TypeDataModule; //offset = 176, size = 4
		Array<ParticleModule*> SpawnModules; //offset = 180, size = 12
		Array<ParticleModule*> UpdateModules; //offset = 192, size = 12
		Int PeakActiveParticles; //offset = 204, size = 4
		Array<ParticleModule*> SpawnRateModules; //offset = 208, size = 12
		Int InitialAllocationCount; //offset = 220, size = 4
	};

	class ParticleModuleAccelerationBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleAccelerationBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleAcceleration: public ParticleModuleAccelerationBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleAcceleration, ParticleModuleAccelerationBase, Engine )

	public:

		RawDistributionVector Acceleration; //offset = 68, size = 28
	};

	class ParticleModuleAccelerationOverLifetime: public ParticleModuleAccelerationBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleAccelerationOverLifetime, ParticleModuleAccelerationBase, Engine )

	public:

		RawDistributionVector AccelOverLife; //offset = 68, size = 28
	};

	class ParticleModuleAttractorBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleAttractorBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleAttractorLine: public ParticleModuleAttractorBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleAttractorLine, ParticleModuleAttractorBase, Engine )

	public:

		Vector EndPoint0; //offset = 68, size = 12
		Vector EndPoint1; //offset = 80, size = 12
		RawDistributionFloat Range; //offset = 92, size = 28
		RawDistributionFloat Strength; //offset = 120, size = 28
	};

	enum EAttractorParticleSelectionMethod
	{
		EAPSM_Random,
		EAPSM_Sequential,
	};

	class ParticleModuleAttractorParticle: public ParticleModuleAttractorBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleAttractorParticle, ParticleModuleAttractorBase, Engine )

	public:

		Name EmitterName; //offset = 68, size = 8
		RawDistributionFloat Range; //offset = 76, size = 28
		Bool bStrengthByDistance: 1; //offset = 104, size = 4
		Bool bAffectBaseVelocity: 1; //offset = 104, size = 4
		Bool bRenewSource: 1; //offset = 104, size = 4
		Bool bInheritSourceVel: 1; //offset = 104, size = 4
		RawDistributionFloat Strength; //offset = 108, size = 28
		Byte SelectionMethod; //offset = 136, size = 1
		Int LastSelIndex; //offset = 140, size = 4
	};

	class ParticleModuleAttractorPoint: public ParticleModuleAttractorBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleAttractorPoint, ParticleModuleAttractorBase, Engine )

	public:

		RawDistributionVector Position; //offset = 68, size = 28
		RawDistributionFloat Range; //offset = 96, size = 28
		RawDistributionFloat Strength; //offset = 124, size = 28
		Bool StrengthByDistance: 1; //offset = 152, size = 4
		Bool bAffectBaseVelocity: 1; //offset = 152, size = 4
		Bool bOverrideVelocity: 1; //offset = 152, size = 4
	};

	enum Beam2SourceTargetTangentMethod
	{
		PEB2STTM_Direct,
		PEB2STTM_UserSet,
		PEB2STTM_Distribution,
	};

	enum Beam2SourceTargetMethod
	{
		PEB2STM_Default,
		PEB2STM_UserSet,
		PEB2STM_Emitter,
	};

	class ParticleModuleBeamBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleBeamBase, ParticleModule, Engine )

	public:
	};

	enum BeamModifierType
	{
		PEB2MT_Source,
		PEB2MT_Target,
	};

	struct BeamModifierOptions
	{
		Bool bModify: 1; //offset = 0, size = 4
		Bool bScale: 1; //offset = 0, size = 4
		Bool bLock: 1; //offset = 0, size = 4
	};

	class ParticleModuleBeamModifier: public ParticleModuleBeamBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleBeamModifier, ParticleModuleBeamBase, Engine )

	public:

		Byte ModifierType; //offset = 68, size = 1
		BeamModifierOptions PositionOptions; //offset = 72, size = 4
		RawDistributionVector Position; //offset = 76, size = 28
		BeamModifierOptions TangentOptions; //offset = 104, size = 4
		RawDistributionVector Tangent; //offset = 108, size = 28
		Bool bAbsoluteTangent: 1; //offset = 136, size = 4
		BeamModifierOptions StrengthOptions; //offset = 140, size = 4
		RawDistributionFloat Strength; //offset = 144, size = 28
	};

	class ParticleModuleBeamNoise: public ParticleModuleBeamBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleBeamNoise, ParticleModuleBeamBase, Engine )

	public:

		Bool bLowFreq_Enabled: 1; //offset = 68, size = 4
		Bool bNRScaleEmitterTime: 1; //offset = 68, size = 4
		Bool bSmooth: 1; //offset = 68, size = 4
		Bool bNoiseLock: 1; //offset = 68, size = 4
		Bool bOscillate: 1; //offset = 68, size = 4
		Bool bUseNoiseTangents: 1; //offset = 68, size = 4
		Bool bTargetNoise: 1; //offset = 68, size = 4
		Bool bApplyNoiseScale: 1; //offset = 68, size = 4
		Int Frequency; //offset = 72, size = 4
		Int Frequency_LowRange; //offset = 76, size = 4
		RawDistributionVector NoiseRange; //offset = 80, size = 28
		RawDistributionFloat NoiseRangeScale; //offset = 108, size = 28
		RawDistributionVector NoiseSpeed; //offset = 136, size = 28
		Float NoiseLockRadius; //offset = 164, size = 4
		Float NoiseLockTime; //offset = 168, size = 4
		Float NoiseTension; //offset = 172, size = 4
		RawDistributionFloat NoiseTangentStrength; //offset = 176, size = 28
		Int NoiseTessellation; //offset = 204, size = 4
		Float FrequencyDistance; //offset = 208, size = 4
		RawDistributionFloat NoiseScale; //offset = 212, size = 28
	};

	class ParticleModuleBeamSource: public ParticleModuleBeamBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleBeamSource, ParticleModuleBeamBase, Engine )

	public:

		Byte SourceMethod; //offset = 68, size = 1
		Byte SourceTangentMethod; //offset = 69, size = 1
		Name SourceName; //offset = 72, size = 8
		Bool bSourceAbsolute: 1; //offset = 80, size = 4
		Bool bLockSource: 1; //offset = 80, size = 4
		Bool bLockSourceTangent: 1; //offset = 80, size = 4
		Bool bLockSourceStength: 1; //offset = 80, size = 4
		RawDistributionVector Source; //offset = 84, size = 28
		RawDistributionVector SourceTangent; //offset = 112, size = 28
		RawDistributionFloat SourceStrength; //offset = 140, size = 28
	};

	class ParticleModuleBeamTarget: public ParticleModuleBeamBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleBeamTarget, ParticleModuleBeamBase, Engine )

	public:

		Byte TargetMethod; //offset = 68, size = 1
		Byte TargetTangentMethod; //offset = 69, size = 1
		Name TargetName; //offset = 72, size = 8
		RawDistributionVector Target; //offset = 80, size = 28
		Bool bTargetAbsolute: 1; //offset = 108, size = 4
		Bool bLockTarget: 1; //offset = 108, size = 4
		Bool bLockTargetTangent: 1; //offset = 108, size = 4
		Bool bLockTargetStength: 1; //offset = 108, size = 4
		RawDistributionVector TargetTangent; //offset = 112, size = 28
		RawDistributionFloat TargetStrength; //offset = 140, size = 28
		Float LockRadius; //offset = 168, size = 4
	};

	enum EParticleCollisionComplete
	{
		EPCC_Kill,
		EPCC_Freeze,
		EPCC_HaltCollisions,
		EPCC_FreezeTranslation,
	};

	class ParticleModuleCollisionBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleCollisionBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleCollision: public ParticleModuleCollisionBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleCollision, ParticleModuleCollisionBase, Engine )

	public:

		RawDistributionVector DampingFactor; //offset = 68, size = 28
		RawDistributionVector DampingFactorRotation; //offset = 96, size = 28
		RawDistributionFloat MaxCollisions; //offset = 124, size = 28
		Byte CollisionCompletionOption; //offset = 152, size = 1
		Bool bApplyPhysics: 1; //offset = 156, size = 4
		Bool bCollidePawns: 1; //offset = 156, size = 4
		Bool bPawnsDoNotDecrementCount: 1; //offset = 156, size = 4
		Bool bOnlyVerticalNormalsDecrementCount: 1; //offset = 156, size = 4
		Bool bDropDetail: 1; //offset = 156, size = 4
		RawDistributionFloat ParticleMass; //offset = 160, size = 28
		Float DirScalar; //offset = 188, size = 4
		Float VerticalFudgeFactor; //offset = 192, size = 4
		RawDistributionFloat DelayAmount; //offset = 196, size = 28
	};

	class ParticleModuleColorBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleColorBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleColor: public ParticleModuleColorBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleColor, ParticleModuleColorBase, Engine )

	public:

		RawDistributionVector StartColor; //offset = 68, size = 28
		RawDistributionFloat StartAlpha; //offset = 96, size = 28
		Bool bClampAlpha: 1; //offset = 124, size = 4
	};

	class ParticleModuleColorByParameter: public ParticleModuleColorBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleColorByParameter, ParticleModuleColorBase, Engine )

	public:

		Name ColorParam; //offset = 68, size = 8
		Color DefaultColor; //offset = 76, size = 4
	};

	class ParticleModuleColorOverLife: public ParticleModuleColorBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleColorOverLife, ParticleModuleColorBase, Engine )

	public:

		RawDistributionVector ColorOverLife; //offset = 68, size = 28
		RawDistributionFloat AlphaOverLife; //offset = 96, size = 28
		Bool bClampAlpha: 1; //offset = 124, size = 4
	};

	class ParticleModuleColorScaleOverLife: public ParticleModuleColorBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleColorScaleOverLife, ParticleModuleColorBase, Engine )

	public:

		RawDistributionVector ColorScaleOverLife; //offset = 68, size = 28
		RawDistributionFloat AlphaScaleOverLife; //offset = 96, size = 28
		Bool bEmitterTime: 1; //offset = 124, size = 4
	};

	class ParticleModuleKillBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleKillBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleKillBox: public ParticleModuleKillBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleKillBox, ParticleModuleKillBase, Engine )

	public:

		RawDistributionVector LowerLeftCorner; //offset = 68, size = 28
		RawDistributionVector UpperRightCorner; //offset = 96, size = 28
		Bool bAbsolute: 1; //offset = 124, size = 4
		Bool bKillInside: 1; //offset = 124, size = 4
	};

	class ParticleModuleKillHeight: public ParticleModuleKillBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleKillHeight, ParticleModuleKillBase, Engine )

	public:

		RawDistributionFloat Height; //offset = 68, size = 28
		Bool bAbsolute: 1; //offset = 96, size = 4
		Bool bFloor: 1; //offset = 96, size = 4
	};

	class ParticleModuleLifetimeBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleLifetimeBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleLifetime: public ParticleModuleLifetimeBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleLifetime, ParticleModuleLifetimeBase, Engine )

	public:

		RawDistributionFloat Lifetime; //offset = 68, size = 28
	};

	class ParticleModuleLocationBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleLocationBase, ParticleModule, Engine )

	public:

		Bool m_bUseSeed: 1; //offset = 68, size = 4
		Bool m_bUpdateSeed: 1; //offset = 68, size = 4
		DistributionFloatParticleParameter* m_Seed; //offset = 72, size = 4
	};

	class ParticleModuleLocation: public ParticleModuleLocationBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleLocation, ParticleModuleLocationBase, Engine )

	public:

		RawDistributionVector StartLocation; //offset = 76, size = 28
	};

	class ParticleModuleLocationDirect: public ParticleModuleLocationBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleLocationDirect, ParticleModuleLocationBase, Engine )

	public:

		RawDistributionVector Location; //offset = 76, size = 28
		RawDistributionVector LocationOffset; //offset = 104, size = 28
		RawDistributionVector ScaleFactor; //offset = 132, size = 28
		RawDistributionVector Direction; //offset = 160, size = 28
	};

	enum ELocationEmitterSelectionMethod
	{
		ELESM_Random,
		ELESM_Sequential,
	};

	class ParticleModuleLocationEmitter: public ParticleModuleLocationBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleLocationEmitter, ParticleModuleLocationBase, Engine )

	public:

		Name EmitterName; //offset = 76, size = 8
		Byte SelectionMethod; //offset = 84, size = 1
		Bool InheritSourceVelocity: 1; //offset = 88, size = 4
		Bool bInheritSourceRotation: 1; //offset = 88, size = 4
		Float InheritSourceVelocityScale; //offset = 92, size = 4
		Float InheritSourceRotationScale; //offset = 96, size = 4
	};

	class ParticleModuleLocationEmitterDirect: public ParticleModuleLocationBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleLocationEmitterDirect, ParticleModuleLocationBase, Engine )

	public:

		Name EmitterName; //offset = 76, size = 8
	};

	class ParticleModuleLocationPrimitiveBase: public ParticleModuleLocationBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleLocationPrimitiveBase, ParticleModuleLocationBase, Engine )

	public:

		Bool Positive_X: 1; //offset = 76, size = 4
		Bool Positive_Y: 1; //offset = 76, size = 4
		Bool Positive_Z: 1; //offset = 76, size = 4
		Bool Negative_X: 1; //offset = 76, size = 4
		Bool Negative_Y: 1; //offset = 76, size = 4
		Bool Negative_Z: 1; //offset = 76, size = 4
		Bool SurfaceOnly: 1; //offset = 76, size = 4
		Bool Velocity: 1; //offset = 76, size = 4
		RawDistributionFloat VelocityScale; //offset = 80, size = 28
		RawDistributionVector StartLocation; //offset = 108, size = 28
	};

	enum CylinderHeightAxis
	{
		PMLPC_HEIGHTAXIS_X,
		PMLPC_HEIGHTAXIS_Y,
	};

	class ParticleModuleLocationPrimitiveCylinder: public ParticleModuleLocationPrimitiveBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleLocationPrimitiveCylinder, ParticleModuleLocationPrimitiveBase, Engine )

	public:

		Bool RadialVelocity: 1; //offset = 136, size = 4
		RawDistributionFloat StartRadius; //offset = 140, size = 28
		RawDistributionFloat StartHeight; //offset = 168, size = 28
		Byte HeightAxis; //offset = 196, size = 1
	};

	class ParticleModuleLocationPrimitiveSphere: public ParticleModuleLocationPrimitiveBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleLocationPrimitiveSphere, ParticleModuleLocationPrimitiveBase, Engine )

	public:

		RawDistributionFloat StartRadius; //offset = 136, size = 28
	};

	class ParticleModuleMaterialBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleMaterialBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleMaterialByParameter: public ParticleModuleMaterialBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleMaterialByParameter, ParticleModuleMaterialBase, Engine )

	public:

		Array<Name> MaterialParameters; //offset = 68, size = 12
		Array<MaterialInterface*> DefaultMaterials; //offset = 80, size = 12
	};

	class ParticleModuleMeshMaterial: public ParticleModuleMaterialBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleMeshMaterial, ParticleModuleMaterialBase, Engine )

	public:

		Array<MaterialInterface*> MeshMaterials; //offset = 68, size = 12
	};

	class ParticleModuleRotationBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleRotationBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleMeshRotation: public ParticleModuleRotationBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleMeshRotation, ParticleModuleRotationBase, Engine )

	public:

		RawDistributionVector StartRotation; //offset = 68, size = 28
		Bool bInheritParent: 1; //offset = 96, size = 4
	};

	class ParticleModuleRotationRateBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleRotationRateBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleMeshRotationRate: public ParticleModuleRotationRateBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleMeshRotationRate, ParticleModuleRotationRateBase, Engine )

	public:

		RawDistributionVector StartRotationRate; //offset = 68, size = 28
	};

	class ParticleModuleMeshRotationRateMultiplyLife: public ParticleModuleRotationRateBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleMeshRotationRateMultiplyLife, ParticleModuleRotationRateBase, Engine )

	public:

		RawDistributionVector LifeMultiplier; //offset = 68, size = 28
	};

	class ParticleModuleOrbitBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleOrbitBase, ParticleModule, Engine )

	public:

		Bool bUseEmitterTime: 1; //offset = 68, size = 4
	};

	enum EOrbitChainMode
	{
		EOChainMode_Add,
		EOChainMode_Scale,
	};

	struct OrbitOptions
	{
		Bool bProcessDuringSpawn: 1; //offset = 0, size = 4
		Bool bProcessDuringUpdate: 1; //offset = 0, size = 4
		Bool bUseEmitterTime: 1; //offset = 0, size = 4
	};

	class ParticleModuleOrbit: public ParticleModuleOrbitBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleOrbit, ParticleModuleOrbitBase, Engine )

	public:

		Byte ChainMode; //offset = 72, size = 1
		RawDistributionVector OffsetAmount; //offset = 76, size = 28
		OrbitOptions OffsetOptions; //offset = 104, size = 4
		RawDistributionVector RotationAmount; //offset = 108, size = 28
		OrbitOptions RotationOptions; //offset = 136, size = 4
		RawDistributionVector RotationRateAmount; //offset = 140, size = 28
		OrbitOptions RotationRateOptions; //offset = 168, size = 4
	};

	class ParticleModuleOrientationBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleOrientationBase, ParticleModule, Engine )

	public:
	};

	enum EParticleAxisLock
	{
		EPAL_NONE,
		EPAL_X,
		EPAL_Y,
		EPAL_Z,
		EPAL_NEGATIVE_X,
		EPAL_NEGATIVE_Y,
	};

	class ParticleModuleOrientationAxisLock: public ParticleModuleOrientationBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleOrientationAxisLock, ParticleModuleOrientationBase, Engine )

	public:

		Byte LockAxisFlags; //offset = 68, size = 1
	};

	class ParticleModuleRequired: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleRequired, ParticleModule, Engine )

	public:

		MaterialInterface* Material; //offset = 68, size = 4
		Byte ScreenAlignment; //offset = 72, size = 1
		Byte ParticleBurstMethod; //offset = 73, size = 1
		Byte InterpolationMethod; //offset = 74, size = 1
		Byte EmitterRenderMode; //offset = 75, size = 1
		Bool bUseLocalSpace: 1; //offset = 76, size = 4
		Bool bKillOnDeactivate: 1; //offset = 76, size = 4
		Bool bKillOnCompleted: 1; //offset = 76, size = 4
		Bool bRequiresSorting: 1; //offset = 76, size = 4
		Bool bEmitterDurationUseRange: 1; //offset = 76, size = 4
		Bool bDurationRecalcEachLoop: 1; //offset = 76, size = 4
		Bool bUseMaxDrawCount: 1; //offset = 76, size = 4
		Bool bDelayFirstLoopOnly: 1; //offset = 76, size = 4
		Bool bScaleUV: 1; //offset = 76, size = 4
		Bool bDirectUV: 1; //offset = 76, size = 4
		Float EmitterDuration; //offset = 80, size = 4
		Float EmitterDurationLow; //offset = 84, size = 4
		Int EmitterLoops; //offset = 88, size = 4
		Int MaxDrawCount; //offset = 92, size = 4
		RawDistributionFloat SpawnRate; //offset = 96, size = 28
		Array<ParticleBurst> BurstList; //offset = 124, size = 12
		Float EmitterDelay; //offset = 136, size = 4
		Int SubImages_Horizontal; //offset = 140, size = 4
		Int SubImages_Vertical; //offset = 144, size = 4
		Float RandomImageTime; //offset = 148, size = 4
		Int RandomImageChanges; //offset = 152, size = 4
		Float DownsampleThresholdScreenFraction; //offset = 156, size = 4
		Color EmitterEditorColor; //offset = 160, size = 4
	};

	class ParticleModuleRotation: public ParticleModuleRotationBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleRotation, ParticleModuleRotationBase, Engine )

	public:

		RawDistributionFloat StartRotation; //offset = 68, size = 28
	};

	class ParticleModuleRotationOverLifetime: public ParticleModuleRotationBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleRotationOverLifetime, ParticleModuleRotationBase, Engine )

	public:

		RawDistributionFloat RotationOverLife; //offset = 68, size = 28
		Bool Scale: 1; //offset = 96, size = 4
	};

	class ParticleModuleRotationRate: public ParticleModuleRotationRateBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleRotationRate, ParticleModuleRotationRateBase, Engine )

	public:

		RawDistributionFloat StartRotationRate; //offset = 68, size = 28
	};

	class ParticleModuleRotationRateMultiplyLife: public ParticleModuleRotationRateBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleRotationRateMultiplyLife, ParticleModuleRotationRateBase, Engine )

	public:

		RawDistributionFloat LifeMultiplier; //offset = 68, size = 28
	};

	class ParticleModuleSizeBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleSizeBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleSize: public ParticleModuleSizeBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleSize, ParticleModuleSizeBase, Engine )

	public:

		RawDistributionVector StartSize; //offset = 68, size = 28
	};

	class ParticleModuleSizeMultiplyLife: public ParticleModuleSizeBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleSizeMultiplyLife, ParticleModuleSizeBase, Engine )

	public:

		RawDistributionVector LifeMultiplier; //offset = 68, size = 28
		Bool MultiplyX: 1; //offset = 96, size = 4
		Bool MultiplyY: 1; //offset = 96, size = 4
		Bool MultiplyZ: 1; //offset = 96, size = 4
	};

	class ParticleModuleSizeMultiplyVelocity: public ParticleModuleSizeBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleSizeMultiplyVelocity, ParticleModuleSizeBase, Engine )

	public:

		RawDistributionVector VelocityMultiplier; //offset = 68, size = 28
		Bool MultiplyX: 1; //offset = 96, size = 4
		Bool MultiplyY: 1; //offset = 96, size = 4
		Bool MultiplyZ: 1; //offset = 96, size = 4
	};

	class ParticleModuleSizeScale: public ParticleModuleSizeBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleSizeScale, ParticleModuleSizeBase, Engine )

	public:

		RawDistributionVector SizeScale; //offset = 68, size = 28
		Bool EnableX: 1; //offset = 96, size = 4
		Bool EnableY: 1; //offset = 96, size = 4
		Bool EnableZ: 1; //offset = 96, size = 4
	};

	class ParticleModuleSpawnBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleSpawnBase, ParticleModule, Engine )

	public:

		Bool bProcessSpawnRate: 1; //offset = 68, size = 4
	};

	class ParticleModuleSpawnPerUnit: public ParticleModuleSpawnBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleSpawnPerUnit, ParticleModuleSpawnBase, Engine )

	public:

		Float UnitScalar; //offset = 72, size = 4
		RawDistributionFloat SpawnPerUnit; //offset = 76, size = 28
		Bool bIgnoreSpawnRateWhenMoving: 1; //offset = 104, size = 4
		Float MovementTolerance; //offset = 108, size = 4
	};

	class ParticleModuleSubUVBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleSubUVBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleSubUV: public ParticleModuleSubUVBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleSubUV, ParticleModuleSubUVBase, Engine )

	public:

		RawDistributionFloat SubImageIndex; //offset = 68, size = 28
	};

	class ParticleModuleSubUVDirect: public ParticleModuleSubUVBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleSubUVDirect, ParticleModuleSubUVBase, Engine )

	public:

		RawDistributionVector SubUVPosition; //offset = 68, size = 28
		RawDistributionVector SubUVSize; //offset = 96, size = 28
	};

	class ParticleModuleSubUVSelect: public ParticleModuleSubUVBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleSubUVSelect, ParticleModuleSubUVBase, Engine )

	public:

		RawDistributionVector SubImageSelect; //offset = 68, size = 28
	};

	class ParticleModuleTrailBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTrailBase, ParticleModule, Engine )

	public:
	};

	enum ETrail2SourceMethod
	{
		PET2SRCM_Default,
		PET2SRCM_Particle,
	};

	class ParticleModuleTrailSource: public ParticleModuleTrailBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTrailSource, ParticleModuleTrailBase, Engine )

	public:

		Byte SourceMethod; //offset = 68, size = 1
		Byte SelectionMethod; //offset = 69, size = 1
		Name SourceName; //offset = 72, size = 8
		RawDistributionFloat SourceStrength; //offset = 80, size = 28
		Bool bLockSourceStength: 1; //offset = 108, size = 4
		Bool bInheritRotation: 1; //offset = 108, size = 4
		Int SourceOffsetCount; //offset = 112, size = 4
		Array<Vector> SourceOffsetDefaults; //offset = 116, size = 12
	};

	enum ETrail2SpawnMethod
	{
		PET2SM_Emitter,
		PET2SM_Velocity,
	};

	class ParticleModuleTrailSpawn: public ParticleModuleTrailBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTrailSpawn, ParticleModuleTrailBase, Engine )

	public:

		DistributionFloatParticleParameter* SpawnDistanceMap; //offset = 68, size = 4
		Float MinSpawnVelocity; //offset = 72, size = 4
	};

	enum ETrailTaperMethod
	{
		PETTM_None,
		PETTM_Full,
	};

	class ParticleModuleTrailTaper: public ParticleModuleTrailBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTrailTaper, ParticleModuleTrailBase, Engine )

	public:

		Byte TaperMethod; //offset = 68, size = 1
		RawDistributionFloat TaperFactor; //offset = 72, size = 28
	};

	enum FluidPacketSizeMultiplier
	{
		FPSM = 5,
		FPSM = 9,
		FPSM,
		FPSM,
	};

	enum FluidSimulationMethod
	{
		FSM_SPH,
		FSM_NO_PARTICLE_INTERACTION,
	};

	enum FluidEmitterShape
	{
		FES_RECTANGLE,
		FES_ELLIPSE,
	};

	enum FluidEmitterType
	{
		FET_CONSTANT_FLOW,
		FET_CONSTANT_PRESSURE,
	};

	struct PhysXFluidTypeData
	{
		Int FluidMaxParticles; //offset = 0, size = 4
		Int FluidNumReserveParticles; //offset = 4, size = 4
		Float FluidRestParticlesPerMeter; //offset = 8, size = 4
		Float FluidRestDensity; //offset = 12, size = 4
		Float FluidKernelRadiusMultiplier; //offset = 16, size = 4
		Float FluidMotionLimitMultiplier; //offset = 20, size = 4
		Float FluidCollisionDistanceMultiplier; //offset = 24, size = 4
		Byte FluidPacketSizeMultiplier; //offset = 28, size = 1
		Float FluidStiffness; //offset = 32, size = 4
		Float FluidViscosity; //offset = 36, size = 4
		Float FluidDamping; //offset = 40, size = 4
		Float FluidFadeInTime; //offset = 44, size = 4
		Vector FluidExternalAcceleration; //offset = 48, size = 12
		Float FluidStaticCollisionRestitution; //offset = 60, size = 4
		Float FluidStaticCollisionAdhesion; //offset = 64, size = 4
		Float FluidStaticCollisionAttraction; //offset = 68, size = 4
		Float FluidDynamicCollisionRestitution; //offset = 72, size = 4
		Float FluidDynamicCollisionAdhesion; //offset = 76, size = 4
		Float FluidDynamicCollisionAttraction; //offset = 80, size = 4
		Float FluidCollisionResponseCoefficient; //offset = 84, size = 4
		Byte FluidSimulationMethod; //offset = 88, size = 1
		Bool bFluidStaticCollision: 1; //offset = 92, size = 4
		Bool bFluidDynamicCollision: 1; //offset = 92, size = 4
		Bool bFluidTwoWayCollision: 1; //offset = 92, size = 4
		Bool bDisableGravity: 1; //offset = 92, size = 4
		Int FluidPacketMaxCount; //offset = 96, size = 4
		Int FluidPacketMinParticleCount; //offset = 100, size = 4
		Float FluidForceScale; //offset = 104, size = 4
		Byte FluidEmitterType; //offset = 108, size = 1
		Int FluidEmitterMaxParticles; //offset = 112, size = 4
		Byte FluidEmitterShape; //offset = 116, size = 1
		Float FluidEmitterDimensionX; //offset = 120, size = 4
		Float FluidEmitterDimensionY; //offset = 124, size = 4
		Vector FluidEmitterRandomPos; //offset = 128, size = 12
		Float FluidEmitterRandomAngle; //offset = 140, size = 4
		Float FluidEmitterFluidVelocityMagnitude; //offset = 144, size = 4
		Float FluidEmitterRate; //offset = 148, size = 4
		Float FluidEmitterParticleLifetime; //offset = 152, size = 4
		Float FluidEmitterRepulsionCoefficient; //offset = 156, size = 4
		Pointer NovodexFluid; //offset = 160, size = 4
		Pointer RBPhysScene; //offset = 164, size = 4
		Pointer PrimaryEmitter; //offset = 168, size = 4
		Int FluidNumParticles; //offset = 172, size = 4
		Int FluidNumCreated; //offset = 176, size = 4
		Int FluidNumDeleted; //offset = 180, size = 4
		Pointer FluidIDCreationBuffer; //offset = 184, size = 4
		Pointer FluidIDDeletionBuffer; //offset = 188, size = 4
		Pointer FluidParticleBuffer; //offset = 192, size = 4
		Pointer FluidParticleBufferEx; //offset = 196, size = 4
		Pointer FluidParticleContacts; //offset = 200, size = 4
		Pointer ParticleRanks; //offset = 204, size = 4
		Pointer FluidAddParticlePos; //offset = 208, size = 4
		Pointer FluidAddParticleVel; //offset = 212, size = 4
		Pointer FluidAddParticleLife; //offset = 216, size = 4
		Int FluidNumParticlePackets; //offset = 220, size = 4
		Pointer FluidParticlePacketData; //offset = 224, size = 4
		Int FluidNumParticleForceUpdate; //offset = 228, size = 4
		Pointer FluidParticleForceUpdate; //offset = 232, size = 4
		Bool bFluidApplyParticleForceUpdates: 1; //offset = 236, size = 4
		Bool bNeedsExtendedParticleData: 1; //offset = 236, size = 4
		Bool bNeedsParticleContactData: 1; //offset = 236, size = 4
		Bool bNeedsParticleRanks: 1; //offset = 236, size = 4
		Pointer ParticleDataTransfer; //offset = 240, size = 4
		Pointer ParticleIndicesTransfer; //offset = 244, size = 4
		Pointer InstanceDataTransfer; //offset = 248, size = 4
		Int ActiveParticlesTransfer; //offset = 252, size = 4
		Int MaxActiveParticlesTransfer; //offset = 256, size = 4
	};

	class ParticleModuleTypeDataBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTypeDataBase, ParticleModule, Engine )

	public:
	};

	enum EBeamEndPointMethod
	{
		PEBEPM_Calculated,
		PEBEPM_Distribution,
	};

	enum EBeamMethod
	{
		PEBM_Distance,
		PEBM_EndPoints,
		PEBM_EndPoints_Interpolated,
	};

	class ParticleModuleTypeDataBeam: public ParticleModuleTypeDataBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTypeDataBeam, ParticleModuleTypeDataBase, Engine )

	public:

		Byte BeamMethod; //offset = 68, size = 1
		Byte EndPointMethod; //offset = 69, size = 1
		RawDistributionFloat Distance; //offset = 72, size = 28
		RawDistributionVector EndPoint; //offset = 100, size = 28
		Int TessellationFactor; //offset = 128, size = 4
		RawDistributionFloat EmitterStrength; //offset = 132, size = 28
		RawDistributionFloat TargetStrength; //offset = 160, size = 28
		RawDistributionVector EndPointDirection; //offset = 188, size = 28
		Int TextureTile; //offset = 216, size = 4
		Bool RenderGeometry: 1; //offset = 220, size = 4
		Bool RenderDirectLine: 1; //offset = 220, size = 4
		Bool RenderLines: 1; //offset = 220, size = 4
		Bool RenderTessellation: 1; //offset = 220, size = 4
	};

	enum EBeamTaperMethod
	{
		PEBTM_None,
		PEBTM_Full,
	};

	enum EBeam2Method
	{
		PEB2M_Distance,
		PEB2M_Target,
	};

	struct BeamTargetData
	{
		Name TargetName; //offset = 0, size = 8
		Float TargetPercentage; //offset = 8, size = 4
	};

	class ParticleModuleTypeDataBeam2: public ParticleModuleTypeDataBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTypeDataBeam2, ParticleModuleTypeDataBase, Engine )

	public:

		Byte BeamMethod; //offset = 68, size = 1
		Byte TaperMethod; //offset = 69, size = 1
		Int TextureTile; //offset = 72, size = 4
		Float TextureTileDistance; //offset = 76, size = 4
		Int Sheets; //offset = 80, size = 4
		Int MaxBeamCount; //offset = 84, size = 4
		Float Speed; //offset = 88, size = 4
		Int InterpolationPoints; //offset = 92, size = 4
		Bool bAlwaysOn: 1; //offset = 96, size = 4
		Bool RenderGeometry: 1; //offset = 96, size = 4
		Bool RenderDirectLine: 1; //offset = 96, size = 4
		Bool RenderLines: 1; //offset = 96, size = 4
		Bool RenderTessellation: 1; //offset = 96, size = 4
		Name BranchParentName; //offset = 100, size = 8
		RawDistributionFloat Distance; //offset = 108, size = 28
		RawDistributionFloat TaperFactor; //offset = 136, size = 28
		RawDistributionFloat TaperScale; //offset = 164, size = 28
	};

	enum EMeshSpawnOrder
	{
		BMM_Random,
		BMM_Sequential,
	};

	enum EMeshScreenAlignment
	{
		PSMA_MeshFaceCameraWithRoll,
		PSMA_MeshFaceCameraWithSpin,
	};

	struct CacheLODInfo
	{
		Array<MaterialInstance*> Materials; //offset = 0, size = 12
	};

	struct CacheMeshData
	{
		Array<CacheLODInfo> LODs; //offset = 0, size = 12
	};

	class ParticleModuleTypeDataMesh: public ParticleModuleTypeDataBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTypeDataMesh, ParticleModuleTypeDataBase, Engine )

	public:

		StaticMesh* Mesh; //offset = 68, size = 4
		Bool CastShadows: 1; //offset = 72, size = 4
		Bool DoCollisions: 1; //offset = 72, size = 4
		Bool bOverrideMaterial: 1; //offset = 72, size = 4
		Bool m_bMaterialCacheActive: 1; //offset = 72, size = 4
		Byte MeshAlignment; //offset = 76, size = 1
		Byte m_eSpawnOrder; //offset = 77, size = 1
		Array<StaticMesh*> m_Meshes; //offset = 80, size = 12
		Array<Material*> m_OverrideMaterials; //offset = 92, size = 12
		Array<MaterialInterface*> m_MaterialOverrides; //offset = 104, size = 12
		Array<CacheMeshData> m_MaterialCache; //offset = 116, size = 12
	};

	enum FluidMeshRotationMethod
	{
		FMRM_DISABLED,
		FMRM_SPHERICAL,
		FMRM_BOX,
	};

	class ParticleModuleTypeDataMeshNxFluid: public ParticleModuleTypeDataMesh
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTypeDataMeshNxFluid, ParticleModuleTypeDataMesh, Engine )

	public:

		PhysXFluidTypeData PhysXFluid; //offset = 128, size = 260
		Byte FluidRotationMethod; //offset = 388, size = 1
		Float FluidRotationCoefficient; //offset = 392, size = 4
	};

	class ParticleModuleTypeDataNxFluid: public ParticleModuleTypeDataBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTypeDataNxFluid, ParticleModuleTypeDataBase, Engine )

	public:

		PhysXFluidTypeData PhysXFluid; //offset = 68, size = 260
	};

	class ParticleModuleTypeDataTrail: public ParticleModuleTypeDataBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTypeDataTrail, ParticleModuleTypeDataBase, Engine )

	public:

		Bool RenderGeometry: 1; //offset = 68, size = 4
		Bool RenderLines: 1; //offset = 68, size = 4
		Bool RenderTessellation: 1; //offset = 68, size = 4
		Bool Tapered: 1; //offset = 68, size = 4
		Bool SpawnByDistance: 1; //offset = 68, size = 4
		Int TessellationFactor; //offset = 72, size = 4
		RawDistributionFloat Tension; //offset = 76, size = 28
		Vector SpawnDistance; //offset = 104, size = 12
	};

	class ParticleModuleTypeDataTrail2: public ParticleModuleTypeDataBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleTypeDataTrail2, ParticleModuleTypeDataBase, Engine )

	public:

		Int TessellationFactor; //offset = 68, size = 4
		Float TessellationFactorDistance; //offset = 72, size = 4
		Float TessellationStrength; //offset = 76, size = 4
		Int TextureTile; //offset = 80, size = 4
		Int Sheets; //offset = 84, size = 4
		Int MaxTrailCount; //offset = 88, size = 4
		Int MaxParticleInTrailCount; //offset = 92, size = 4
		Bool RenderGeometry: 1; //offset = 96, size = 4
		Bool RenderDirectLine: 1; //offset = 96, size = 4
		Bool RenderLines: 1; //offset = 96, size = 4
		Bool RenderTessellation: 1; //offset = 96, size = 4
	};

	class ParticleModuleUberBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleUberBase, ParticleModule, Engine )

	public:

		Array<Name> RequiredModules; //offset = 68, size = 12
	};

	class ParticleModuleUberLTISIVCL: public ParticleModuleUberBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleUberLTISIVCL, ParticleModuleUberBase, Engine )

	public:

		RawDistributionFloat Lifetime; //offset = 80, size = 28
		RawDistributionVector StartSize; //offset = 108, size = 28
		RawDistributionVector StartVelocity; //offset = 136, size = 28
		RawDistributionFloat StartVelocityRadial; //offset = 164, size = 28
		RawDistributionVector ColorOverLife; //offset = 192, size = 28
		RawDistributionFloat AlphaOverLife; //offset = 220, size = 28
	};

	class ParticleModuleUberLTISIVCLIL: public ParticleModuleUberBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleUberLTISIVCLIL, ParticleModuleUberBase, Engine )

	public:

		RawDistributionFloat Lifetime; //offset = 80, size = 28
		RawDistributionVector StartSize; //offset = 108, size = 28
		RawDistributionVector StartVelocity; //offset = 136, size = 28
		RawDistributionFloat StartVelocityRadial; //offset = 164, size = 28
		RawDistributionVector ColorOverLife; //offset = 192, size = 28
		RawDistributionFloat AlphaOverLife; //offset = 220, size = 28
		RawDistributionVector StartLocation; //offset = 248, size = 28
	};

	class ParticleModuleUberLTISIVCLILIRSSBLIRR: public ParticleModuleUberBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleUberLTISIVCLILIRSSBLIRR, ParticleModuleUberBase, Engine )

	public:

		RawDistributionFloat Lifetime; //offset = 80, size = 28
		RawDistributionVector StartSize; //offset = 108, size = 28
		RawDistributionVector StartVelocity; //offset = 136, size = 28
		RawDistributionFloat StartVelocityRadial; //offset = 164, size = 28
		RawDistributionVector ColorOverLife; //offset = 192, size = 28
		RawDistributionFloat AlphaOverLife; //offset = 220, size = 28
		RawDistributionVector StartLocation; //offset = 248, size = 28
		RawDistributionFloat StartRotation; //offset = 276, size = 28
		RawDistributionVector SizeLifeMultiplier; //offset = 304, size = 28
		Bool SizeMultiplyX: 1; //offset = 332, size = 4
		Bool SizeMultiplyY: 1; //offset = 332, size = 4
		Bool SizeMultiplyZ: 1; //offset = 332, size = 4
		RawDistributionFloat StartRotationRate; //offset = 336, size = 28
	};

	class ParticleModuleUberRainDrops: public ParticleModuleUberBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleUberRainDrops, ParticleModuleUberBase, Engine )

	public:

		Float LifetimeMin; //offset = 80, size = 4
		Float LifetimeMax; //offset = 84, size = 4
		Vector StartSizeMin; //offset = 88, size = 12
		Vector StartSizeMax; //offset = 100, size = 12
		Vector StartVelocityMin; //offset = 112, size = 12
		Vector StartVelocityMax; //offset = 124, size = 12
		Float StartVelocityRadialMin; //offset = 136, size = 4
		Float StartVelocityRadialMax; //offset = 140, size = 4
		Vector ColorOverLife; //offset = 144, size = 12
		Float AlphaOverLife; //offset = 156, size = 4
		Bool bIsUsingCylinder: 1; //offset = 160, size = 4
		Bool bPositive_X: 1; //offset = 160, size = 4
		Bool bPositive_Y: 1; //offset = 160, size = 4
		Bool bPositive_Z: 1; //offset = 160, size = 4
		Bool bNegative_X: 1; //offset = 160, size = 4
		Bool bNegative_Y: 1; //offset = 160, size = 4
		Bool bNegative_Z: 1; //offset = 160, size = 4
		Bool bSurfaceOnly: 1; //offset = 160, size = 4
		Bool bVelocity: 1; //offset = 160, size = 4
		Bool bRadialVelocity: 1; //offset = 160, size = 4
		Float PC_VelocityScale; //offset = 164, size = 4
		Vector PC_StartLocation; //offset = 168, size = 12
		Float PC_StartRadius; //offset = 180, size = 4
		Float PC_StartHeight; //offset = 184, size = 4
		Byte PC_HeightAxis; //offset = 188, size = 1
		Vector StartLocationMin; //offset = 192, size = 12
		Vector StartLocationMax; //offset = 204, size = 12
	};

	class ParticleModuleUberRainImpacts: public ParticleModuleUberBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleUberRainImpacts, ParticleModuleUberBase, Engine )

	public:

		RawDistributionFloat Lifetime; //offset = 80, size = 28
		RawDistributionVector StartSize; //offset = 108, size = 28
		RawDistributionVector StartRotation; //offset = 136, size = 28
		Bool bInheritParent: 1; //offset = 164, size = 4
		Bool MultiplyX: 1; //offset = 164, size = 4
		Bool MultiplyY: 1; //offset = 164, size = 4
		Bool MultiplyZ: 1; //offset = 164, size = 4
		Bool bIsUsingCylinder: 1; //offset = 164, size = 4
		Bool bPositive_X: 1; //offset = 164, size = 4
		Bool bPositive_Y: 1; //offset = 164, size = 4
		Bool bPositive_Z: 1; //offset = 164, size = 4
		Bool bNegative_X: 1; //offset = 164, size = 4
		Bool bNegative_Y: 1; //offset = 164, size = 4
		Bool bNegative_Z: 1; //offset = 164, size = 4
		Bool bSurfaceOnly: 1; //offset = 164, size = 4
		Bool bVelocity: 1; //offset = 164, size = 4
		Bool bRadialVelocity: 1; //offset = 164, size = 4
		RawDistributionVector LifeMultiplier; //offset = 168, size = 28
		RawDistributionFloat PC_VelocityScale; //offset = 196, size = 28
		RawDistributionVector PC_StartLocation; //offset = 224, size = 28
		RawDistributionFloat PC_StartRadius; //offset = 252, size = 28
		RawDistributionFloat PC_StartHeight; //offset = 280, size = 28
		Byte PC_HeightAxis; //offset = 308, size = 1
		RawDistributionVector ColorOverLife; //offset = 312, size = 28
		RawDistributionFloat AlphaOverLife; //offset = 340, size = 28
	};

	class ParticleModuleUberRainSplashA: public ParticleModuleUberBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleUberRainSplashA, ParticleModuleUberBase, Engine )

	public:

		RawDistributionFloat Lifetime; //offset = 80, size = 28
		RawDistributionVector StartSize; //offset = 108, size = 28
		RawDistributionVector StartRotation; //offset = 136, size = 28
		Bool bInheritParent: 1; //offset = 164, size = 4
		Bool MultiplyX: 1; //offset = 164, size = 4
		Bool MultiplyY: 1; //offset = 164, size = 4
		Bool MultiplyZ: 1; //offset = 164, size = 4
		RawDistributionVector LifeMultiplier; //offset = 168, size = 28
		RawDistributionVector ColorOverLife; //offset = 196, size = 28
		RawDistributionFloat AlphaOverLife; //offset = 224, size = 28
	};

	class ParticleModuleUberRainSplashB: public ParticleModuleUberBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleUberRainSplashB, ParticleModuleUberBase, Engine )

	public:

		RawDistributionFloat Lifetime; //offset = 80, size = 28
		RawDistributionVector StartSize; //offset = 108, size = 28
		RawDistributionVector ColorOverLife; //offset = 136, size = 28
		RawDistributionFloat AlphaOverLife; //offset = 164, size = 28
		RawDistributionVector LifeMultiplier; //offset = 192, size = 28
		Bool MultiplyX: 1; //offset = 220, size = 4
		Bool MultiplyY: 1; //offset = 220, size = 4
		Bool MultiplyZ: 1; //offset = 220, size = 4
		RawDistributionFloat StartRotationRate; //offset = 224, size = 28
	};

	class ParticleModuleVelocityBase: public ParticleModule
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleVelocityBase, ParticleModule, Engine )

	public:
	};

	class ParticleModuleVelocity: public ParticleModuleVelocityBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleVelocity, ParticleModuleVelocityBase, Engine )

	public:

		RawDistributionVector StartVelocity; //offset = 68, size = 28
		RawDistributionFloat StartVelocityRadial; //offset = 96, size = 28
	};

	class ParticleModuleVelocityInheritParent: public ParticleModuleVelocityBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleVelocityInheritParent, ParticleModuleVelocityBase, Engine )

	public:

		RawDistributionVector Scale; //offset = 68, size = 28
	};

	class ParticleModuleVelocityOverLifetime: public ParticleModuleVelocityBase
	{
		DECLARE_PACKAGE_CLASS( ParticleModuleVelocityOverLifetime, ParticleModuleVelocityBase, Engine )

	public:

		RawDistributionVector VelOverLife; //offset = 68, size = 28
		Bool Absolute: 1; //offset = 96, size = 4
	};

	enum EParticleScreenAlignment
	{
		PSA_Square,
		PSA_Rectangle,
		PSA_Velocity,
	};

	class ParticleSpriteEmitter: public ParticleEmitter
	{
		DECLARE_PACKAGE_CLASS( ParticleSpriteEmitter, ParticleEmitter, Engine )

	public:
	};

	enum ParticleSystemLODMethod
	{
		PARTICLESYSTEMLODMETHOD_Automatic,
		PARTICLESYSTEMLODMETHOD_DirectSet,
	};

	enum EParticleSystemUpdateMode
	{
		EPSUM_RealTime,
		EPSUM_FixedTime,
	};

	struct DebugParticleParameterVector
	{
		Vector vValue; //offset = 0, size = 12
		Name nmValue; //offset = 12, size = 8
	};

	struct DebugParticleParameterFloat
	{
		Float fValue; //offset = 0, size = 4
		Name nmValue; //offset = 4, size = 8
	};

	class ParticleSystem: public Object
	{
		DECLARE_PACKAGE_CLASS( ParticleSystem, Object, Engine )

	public:

		Byte SystemUpdateMode; //offset = 60, size = 1
		Byte LODMethod; //offset = 61, size = 1
		Float UpdateTime_FPS; //offset = 64, size = 4
		Float UpdateTime_Delta; //offset = 68, size = 4
		Float WarmupTime; //offset = 72, size = 4
		Array<ParticleEmitter*> Emitters; //offset = 76, size = 12
		ParticleSystemComponent* PreviewComponent; //offset = 88, size = 4
		Rotator ThumbnailAngle; //offset = 92, size = 12
		Float ThumbnailDistance; //offset = 104, size = 4
		Float ThumbnailWarmup; //offset = 108, size = 4
		Bool bLit: 1; //offset = 112, size = 4
		Bool bRegenerateLODDuplicate: 1; //offset = 112, size = 4
		Bool bUseFixedRelativeBoundingBox: 1; //offset = 112, size = 4
		Bool BioLockLowestLODToHighest: 1; //offset = 112, size = 4
		Bool bShouldResetPeakCounts: 1; //offset = 112, size = 4
		Bool bUseRealtimeThumbnail: 1; //offset = 112, size = 4
		Bool ThumbnailImageOutOfDate: 1; //offset = 112, size = 4
		InterpCurveEdSetup* CurveEdSetup; //offset = 116, size = 4
		Float LODDistanceCheckTime; //offset = 120, size = 4
		Array<Float> LODDistances; //offset = 124, size = 12
		Int EditorLODSetting; //offset = 136, size = 4
		Box FixedRelativeBoundingBox; //offset = 140, size = 28
		Float SecondsBeforeInactive; //offset = 168, size = 4
		Float fBioDebugValue; //offset = 172, size = 4
		Array<DebugParticleParameterFloat> aFloatParameters; //offset = 176, size = 12
		Array<DebugParticleParameterVector> aVectorParameters; //offset = 188, size = 12
		String FloorMesh; //offset = 200, size = 12
		Vector FloorPosition; //offset = 212, size = 12
		Rotator FloorRotation; //offset = 224, size = 12
		Float FloorScale; //offset = 236, size = 4
		Vector FloorScale3D; //offset = 240, size = 12
		Bool bHasPhysics: 1; //offset = 252, size = 4
		Bool bBioDependsOnPhysics: 1; //offset = 252, size = 4
		Texture2D* ThumbnailImage; //offset = 256, size = 4

		Bool SetLODDistance( Int LODLevelIndex, Float InDistance );
		void SetCurrentLODMethod( Byte InMethod );
		Float GetLODDistance( Int LODLevelIndex );
		Int GetLODLevelCount();
		Byte GetCurrentLODMethod();
	};

	enum EParticleSysParamType
	{
		PSPT_None,
		PSPT_Scalar,
		PSPT_Vector,
		PSPT_Color,
	};

	struct ParticleSysParam
	{
		Name Name; //offset = 0, size = 8
		Byte ParamType; //offset = 8, size = 1
		Float Scalar; //offset = 12, size = 4
		Vector Vector; //offset = 16, size = 12
		Color Color; //offset = 28, size = 4
		Actor* Actor; //offset = 32, size = 4
		MaterialInterface* Material; //offset = 36, size = 4
	};

	struct ParticleEmitterInstance
	{
	};

	class ParticleSystemComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( ParticleSystemComponent, PrimitiveComponent, Engine )

	public:

		ParticleSystem* Template; //offset = 448, size = 4
		Array<Pointer> EmitterInstances; //offset = 452, size = 12
		Array<StaticMeshComponent*> SMComponents; //offset = 464, size = 12
		Array<MaterialInterface*> SMMaterialInterfaces; //offset = 476, size = 12
		Bool bAutoActivate: 1; //offset = 488, size = 4
		Bool bWasCompleted: 1; //offset = 488, size = 4
		Bool bSuppressSpawning: 1; //offset = 488, size = 4
		Bool bWasDeactivated: 1; //offset = 488, size = 4
		Bool bResetOnDetach: 1; //offset = 488, size = 4
		Bool bUpdateOnDedicatedServer: 1; //offset = 488, size = 4
		Bool bJustAttached: 1; //offset = 488, size = 4
		Bool bWarmingUp: 1; //offset = 488, size = 4
		Bool bIsCachedInPool: 1; //offset = 488, size = 4
		Bool bOverrideLODMethod: 1; //offset = 488, size = 4
		Bool bSkipUpdateDynamicDataDuringTick: 1; //offset = 488, size = 4
		Bool bUpdateComponentInTick: 1; //offset = 488, size = 4
		Bool bDeferredBeamUpdate: 1; //offset = 488, size = 4
		Bool bIsActive: 1; //offset = 488, size = 4
		Bool bForcedInActive: 1; //offset = 488, size = 4
		Bool bIsWarmingUp: 1; //offset = 488, size = 4
		Bool bIsViewRelevanceDirty: 1; //offset = 488, size = 4
		Array<ParticleSysParam> InstanceParameters; //offset = 492, size = 12
		Vector OldPosition; //offset = 504, size = 12
		Vector PartSysVelocity; //offset = 516, size = 12
		Float WarmupTime; //offset = 528, size = 4
		Int LODLevel; //offset = 532, size = 4
		Float SecondsBeforeInactive; //offset = 536, size = 4
		Int EditorLODLevel; //offset = 540, size = 4
		Float AccumTickTime; //offset = 544, size = 4
		Byte LODMethod; //offset = 548, size = 1
		Array<MaterialViewRelevance> CachedViewRelevanceFlags; //offset = 552, size = 12
		__OnSystemFinished__Delegate __OnSystemFinished__Delegate; //offset = 564, size = 12

		void ResetToDefaults();
		void SetActive( Bool bNowActive );
		void SuppressSpawning();
		void ClearAllParameters();
		void ClearParameter( Name ParameterName, Byte ParameterType );
		void SetMaterialParameter( Name ParameterName, MaterialInterface* Param );
		void SetActorParameter( Name ParameterName, Actor* Param );
		void SetColorParameter( Name ParameterName, Color Param );
		void SetVectorParameter( Name ParameterName, Vector Param );
		void SetFloatParameter( Name ParameterName, Float Param );
		Int GetEditorLODLevel();
		Int GetLODLevel();
		void SetEditorLODLevel( Int InLODLevel );
		void SetLODLevel( Int InLODLevel );
		void SetBeamTargetStrength( Int EmitterIndex, Float NewTargetStrength, Int TargetIndex );
		void SetBeamTargetTangent( Int EmitterIndex, Vector NewTangentPoint, Int TargetIndex );
		void SetBeamTargetPoint( Int EmitterIndex, Vector NewTargetPoint, Int TargetIndex );
		void SetBeamSourceStrength( Int EmitterIndex, Float NewSourceStrength, Int SourceIndex );
		void SetBeamSourceTangent( Int EmitterIndex, Vector NewTangentPoint, Int SourceIndex );
		void SetBeamSourcePoint( Int EmitterIndex, Vector NewSourcePoint, Int SourceIndex );
		void SetBeamDistance( Int EmitterIndex, Float Distance );
		void SetBeamEndPoint( Int EmitterIndex, Vector NewEndPoint );
		void SetBeamTessellationFactor( Int EmitterIndex, Float NewFactor );
		void SetBeamType( Int EmitterIndex, Int NewMethod );
		void RewindEmitterInstances();
		void RewindEmitterInstance( Int EmitterIndex );
		void SetKillOnCompleted( Int EmitterIndex, Bool bKill );
		void SetKillOnDeactivate( Int EmitterIndex, Bool bKill );
		Bool GetSkipUpdateDynamicDataDuringTick();
		void SetSkipUpdateDynamicDataDuringTick( Bool bInSkipUpdateDynamicDataDuringTick );
		void KillParticlesForced();
		void DeactivateSystem();
		void ActivateSystem();
		void SetTemplate( ParticleSystem* NewTemplate );
		void OnSystemFinished( ParticleSystemComponent* PSystem );
	};

	class KActor: public DynamicSMActor
	{
		DECLARE_PACKAGE_CLASS( KActor, DynamicSMActor, Engine )

	public:

		Bool bDamageAppliesImpulse: 1; //offset = 564, size = 4
		Bool bWakeOnLevelStart: 1; //offset = 564, size = 4
		Bool bCurrentSlide: 1; //offset = 564, size = 4
		Bool bSlideActive: 1; //offset = 564, size = 4
		ParticleSystemComponent* ImpactEffectComponent; //offset = 568, size = 4
		AudioComponent* ImpactSoundComponent; //offset = 572, size = 4
		AudioComponent* ImpactSoundComponent2; //offset = 576, size = 4
		Float LastImpactTime; //offset = 580, size = 4
		ParticleSystemComponent* SlideEffectComponent; //offset = 584, size = 4
		AudioComponent* SlideSoundComponent; //offset = 588, size = 4
		Float LastSlideTime; //offset = 592, size = 4
		RigidBodyState RBState; //offset = 596, size = 56
		Float AngErrorAccumulator; //offset = 652, size = 4
		Float DrawScaleX; //offset = 656, size = 4
		Float DrawScaleY; //offset = 660, size = 4
		Float DrawScaleZ; //offset = 664, size = 4
		Vector InitialLocation; //offset = 668, size = 12
		Rotator InitialRotation; //offset = 680, size = 12

		void Reset();
		void OnTeleport( SeqAct_Teleport* inAction, Array<Object*> objVars, Int idx, Actor* destActor );
		void OnToggle( SeqAct_Toggle* Action );
		void TakeRadiusDamage( Controller* InstigatedBy, Float BaseDamage, Float DamageRadius, Class* DamageType, Float Momentum, Vector HurtOrigin, Bool bFullDamage, Actor* DamageCauser, Int idx, SeqEvent_TakeDamage* DmgEvt );
		void TakeDamage( Float Damage, Controller* EventInstigator, Vector HitLocation, Vector Momentum, Class* DamageType, TraceHitInfo HitInfo, Actor* DamageCauser, Vector ApplyImpulse );
		void ApplyImpulse( Vector ImpulseDir, Float ImpulseMag, Vector HitLocation, TraceHitInfo HitInfo, Vector ApplyImpulse );
		void ReplicatedEvent( Name VarName, Vector NewDrawScale3D );
		void SetPhysicalCollisionProperties( PhysicalMaterial* PhysMat );
		void FellOutOfWorld( Class* dmgType );
		void PostBeginPlay();
		void ResolveRBState();
		PhysicalMaterial* GetKActorPhysMaterial();
	};

	class KActorSpawnable: public KActor
	{
		DECLARE_PACKAGE_CLASS( KActorSpawnable, KActor, Engine )

	public:

		void ResetComponents();
		void Recycle();
		void Initialize();
	};

	class KAsset: public Actor
	{
		DECLARE_PACKAGE_CLASS( KAsset, Actor, Engine )

	public:

		SkeletalMeshComponent* SkeletalMeshComponent; //offset = 508, size = 4
		Bool bDamageAppliesImpulse: 1; //offset = 512, size = 4
		Bool bWakeOnLevelStart: 1; //offset = 512, size = 4
		Bool bBlockPawns: 1; //offset = 512, size = 4
		SkeletalMesh* ReplicatedMesh; //offset = 516, size = 4
		PhysicsAsset* ReplicatedPhysAsset; //offset = 520, size = 4

		void DoKismetAttachment( Actor* Attachment, SeqAct_AttachToActor* Action );
		void OnTeleport( SeqAct_Teleport* inAction, Actor* destActor );
		void OnToggle( SeqAct_Toggle* Action );
		void TakeRadiusDamage( Controller* InstigatedBy, Float BaseDamage, Float DamageRadius, Class* DamageType, Float Momentum, Vector HurtOrigin, Bool bFullDamage, Actor* DamageCauser );
		void TakeDamage( Float Damage, Controller* EventInstigator, Vector HitLocation, Vector Momentum, Class* DamageType, TraceHitInfo HitInfo, Actor* DamageCauser, Vector ApplyImpulse );
		void ReplicatedEvent( Name VarName );
		void PostBeginPlay();
	};

	class PhysicalMaterialPropertyBase: public Object
	{
		DECLARE_PACKAGE_CLASS( PhysicalMaterialPropertyBase, Object, Engine )

	public:
	};

	class PhysicalMaterial: public Object
	{
		DECLARE_PACKAGE_CLASS( PhysicalMaterial, Object, Engine )

	public:

		Int MaterialIndex; //offset = 60, size = 4
		Float Friction; //offset = 64, size = 4
		Float Restitution; //offset = 68, size = 4
		Bool bForceConeFriction: 1; //offset = 72, size = 4
		Bool bEnableAnisotropicFriction: 1; //offset = 72, size = 4
		Bool m_bIgnoreSelfCollisions: 1; //offset = 72, size = 4
		Vector AnisoFrictionDir; //offset = 76, size = 12
		Float FrictionV; //offset = 88, size = 4
		Float Density; //offset = 92, size = 4
		Float AngularDamping; //offset = 96, size = 4
		Float LinearDamping; //offset = 100, size = 4
		Float MagneticResponse; //offset = 104, size = 4
		Float WindResponse; //offset = 108, size = 4
		Float ImpactThreshold; //offset = 112, size = 4
		Float ImpactReFireDelay; //offset = 116, size = 4
		ParticleSystem* ImpactEffect; //offset = 120, size = 4
		SoundCue* ImpactSound; //offset = 124, size = 4
		Float SlideThreshold; //offset = 128, size = 4
		Float SlideReFireDelay; //offset = 132, size = 4
		ParticleSystem* SlideEffect; //offset = 136, size = 4
		SoundCue* SlideSound; //offset = 140, size = 4
		Name m_nmPhysicsCollisionSound; //offset = 144, size = 8
		Float AudioObstruction; //offset = 152, size = 4
		Float AudioOcclusion; //offset = 156, size = 4
		PhysicalMaterial* Parent; //offset = 160, size = 4
		PhysicalMaterialPropertyBase* PhysicalMaterialProperty; //offset = 164, size = 4

		PhysicalMaterialPropertyBase* GetPhysicalMaterialProperty( Class* DesiredClass );
		void AllPhysicalMaterials( PhysicalMaterial* OutPhysMat );
	};

	class PhysicsAsset: public Object
	{
		DECLARE_PACKAGE_CLASS( PhysicsAsset, Object, Engine )

	public:

		SkeletalMesh* DefaultSkelMesh; //offset = 60, size = 4
		Array<RB_BodySetup*> BodySetup; //offset = 64, size = 12
		Array<RB_ConstraintSetup*> ConstraintSetup; //offset = 76, size = 12
		PhysicsAssetInstance* DefaultInstance; //offset = 88, size = 4
	};

	class RB_BodyInstance: public Object
	{
		DECLARE_PACKAGE_CLASS( RB_BodyInstance, Object, Engine )

	public:

		PrimitiveComponent* OwnerComponent; //offset = 60, size = 4
		Int BodyIndex; //offset = 64, size = 4
		Vector Velocity; //offset = 68, size = 12
		Vector PreviousVelocity; //offset = 80, size = 12
		Int SceneIndex; //offset = 92, size = 4
		Pointer BodyData; //offset = 96, size = 4
		Pointer BoneSpring; //offset = 100, size = 4
		Pointer BoneSpringKinActor; //offset = 104, size = 4
		Bool bEnableBoneSpringLinear: 1; //offset = 108, size = 4
		Bool bEnableBoneSpringAngular: 1; //offset = 108, size = 4
		Bool bDisableOnOverextension: 1; //offset = 108, size = 4
		Bool bTeleportOnOverextension: 1; //offset = 108, size = 4
		Bool bUseKinActorForBoneSpring: 1; //offset = 108, size = 4
		Bool bMakeSpringToBaseCollisionComponent: 1; //offset = 108, size = 4
		Bool bOnlyCollideWithPawns: 1; //offset = 108, size = 4
		Bool bEnableCollisionResponse: 1; //offset = 108, size = 4
		Bool bPushBody: 1; //offset = 108, size = 4
		Float BoneLinearSpring; //offset = 112, size = 4
		Float BoneLinearDamping; //offset = 116, size = 4
		Float BoneAngularSpring; //offset = 120, size = 4
		Float BoneAngularDamping; //offset = 124, size = 4
		Float OverextensionThreshold; //offset = 128, size = 4
		Float CustomGravityFactor; //offset = 132, size = 4
		Float LastEffectPlayedTime; //offset = 136, size = 4
		PhysicalMaterial* PhysMaterialOverride; //offset = 140, size = 4

		void EnableCollisionResponse( Bool bEnableResponse );
		void SetPhysMaterialOverride( PhysicalMaterial* NewPhysMaterial );
		void SetBlockRigidBody( Bool bNewBlockRigidBody );
		void SetBoneSpringTarget( Matrix InBoneTarget, Bool bTeleport );
		void SetBoneSpringParams( Float InLinearSpring, Float InLinearDamping, Float InAngularSpring, Float InAngularDamping );
		void EnableBoneSpring( Bool bInEnableLinear, Bool bInEnableAngular, Matrix InBoneTarget );
		Vector GetUnrealWorldAngularVelocity();
		Vector GetUnrealWorldVelocity();
		Matrix GetUnrealWorldTM();
		Bool IsValidBodyInstance();
		Bool IsFixed();
		void SetFixed( Bool bNewFixed );
	};

	class PhysicsAssetInstance: public Object
	{
		DECLARE_PACKAGE_CLASS( PhysicsAssetInstance, Object, Engine )

	public:

		Actor* Owner; //offset = 60, size = 4
		Int RootBodyIndex; //offset = 64, size = 4
		Array<RB_BodyInstance*> Bodies; //offset = 68, size = 12
		Array<RB_ConstraintInstance*> Constraints; //offset = 80, size = 12
		Map_Mirror CollisionDisableTable; //offset = 92, size = 20
		Float LinearSpringScale; //offset = 112, size = 4
		Float LinearDampingScale; //offset = 116, size = 4
		Float LinearForceLimitScale; //offset = 120, size = 4
		Float AngularSpringScale; //offset = 124, size = 4
		Float AngularDampingScale; //offset = 128, size = 4
		Float AngularForceLimitScale; //offset = 132, size = 4
		Bool bHasFixedBody: 1; //offset = 136, size = 4

		RB_ConstraintInstance* FindConstraintInstance( Name ConName, PhysicsAsset* InAsset );
		RB_BodyInstance* FindBodyInstance( Name BodyName, PhysicsAsset* InAsset );
		void SetFullAnimWeightBonesFixed( Bool bNewFixed, SkeletalMeshComponent* SkelMesh );
		void SetNamedBodiesBlockRigidBody( Bool bNewBlockRigidBody, Array<Name> BoneNames, SkeletalMeshComponent* SkelMesh );
		void SetNamedRBBoneSprings( Bool bEnable, Array<Name> BoneNames, Float InBoneLinearSpring, Float InBoneAngularSpring, SkeletalMeshComponent* SkelMeshComp );
		void SetAllMotorsAngularDriveParams( Float InSpring, Float InDamping, Float InForceLimit );
		void SetNamedMotorsAngularPositionDrive( Bool bEnableSwingDrive, Bool bEnableTwistDrive, Array<Name> BoneNames, SkeletalMeshComponent* SkelMeshComp, Bool bSetOtherBodiesToComplement );
		void SetAllMotorsAngularPositionDrive( Bool bEnableSwingDrive, Bool bEnableTwistDrive );
		void SetNamedBodiesFixed( Bool bNewFixed, Array<Name> BoneNames, SkeletalMeshComponent* SkelMesh, Bool bSetOtherBodiesToComplement );
		void SetAllBodiesFixed( Bool bNewFixed );
		Float GetTotalMassBelowBone( Name InBoneName, PhysicsAsset* InAsset, SkeletalMesh* InSkelMesh );
		void SetAllMotorsAngularDriveStrength( Float InAngularSpringStrength, Float InAngularDampingStrength, Float InAngularForceLimitStrength, SkeletalMeshComponent* SkelMeshComp );
		void SetAngularDriveScale( Float InAngularSpringScale, Float InAngularDampingScale, Float InAngularForceLimitScale );
		void SetLinearDriveScale( Float InLinearSpringScale, Float InLinearDampingScale, Float InLinearForceLimitScale );
	};

	struct LinearDOFSetup
	{
		Byte bLimited; //offset = 0, size = 1
		Float LimitSize; //offset = 4, size = 4
	};

	class RB_ConstraintSetup: public Object
	{
		DECLARE_PACKAGE_CLASS( RB_ConstraintSetup, Object, Engine )

	public:

		Name JointName; //offset = 60, size = 8
		Name ConstraintBone1; //offset = 68, size = 8
		Name ConstraintBone2; //offset = 76, size = 8
		Vector Pos1; //offset = 84, size = 12
		Vector PriAxis1; //offset = 96, size = 12
		Vector SecAxis1; //offset = 108, size = 12
		Vector Pos2; //offset = 120, size = 12
		Vector PriAxis2; //offset = 132, size = 12
		Vector SecAxis2; //offset = 144, size = 12
		Vector PulleyPivot1; //offset = 156, size = 12
		Vector PulleyPivot2; //offset = 168, size = 12
		LinearDOFSetup LinearXSetup; //offset = 180, size = 8
		LinearDOFSetup LinearYSetup; //offset = 188, size = 8
		LinearDOFSetup LinearZSetup; //offset = 196, size = 8
		Bool bLinearLimitSoft: 1; //offset = 204, size = 4
		Bool bLinearBreakable: 1; //offset = 204, size = 4
		Bool bSwingLimited: 1; //offset = 204, size = 4
		Bool bTwistLimited: 1; //offset = 204, size = 4
		Bool bSwingLimitSoft: 1; //offset = 204, size = 4
		Bool bTwistLimitSoft: 1; //offset = 204, size = 4
		Bool bAngularBreakable: 1; //offset = 204, size = 4
		Bool bIsPulley: 1; //offset = 204, size = 4
		Bool bMaintainMinDistance: 1; //offset = 204, size = 4
		Float LinearLimitStiffness; //offset = 208, size = 4
		Float LinearLimitDamping; //offset = 212, size = 4
		Float LinearBreakThreshold; //offset = 216, size = 4
		Float Swing1LimitAngle; //offset = 220, size = 4
		Float Swing2LimitAngle; //offset = 224, size = 4
		Float TwistLimitAngle; //offset = 228, size = 4
		Float SwingLimitStiffness; //offset = 232, size = 4
		Float SwingLimitDamping; //offset = 236, size = 4
		Float TwistLimitStiffness; //offset = 240, size = 4
		Float TwistLimitDamping; //offset = 244, size = 4
		Float AngularBreakThreshold; //offset = 248, size = 4
		Float PulleyRatio; //offset = 252, size = 4
	};

	class RB_BSJointSetup: public RB_ConstraintSetup
	{
		DECLARE_PACKAGE_CLASS( RB_BSJointSetup, RB_ConstraintSetup, Engine )

	public:
	};

	class RB_ConstraintActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( RB_ConstraintActor, Actor, Engine )

	public:

		Actor* ConstraintActor1; //offset = 508, size = 4
		Actor* ConstraintActor2; //offset = 512, size = 4
		RB_ConstraintSetup* ConstraintSetup; //offset = 516, size = 4
		RB_ConstraintInstance* ConstraintInstance; //offset = 520, size = 4
		Bool bDisableCollision: 1; //offset = 524, size = 4
		Bool bUpdateActor1RefFrame: 1; //offset = 524, size = 4
		Bool bUpdateActor2RefFrame: 1; //offset = 524, size = 4
		Actor* PulleyPivotActor1; //offset = 528, size = 4
		Actor* PulleyPivotActor2; //offset = 532, size = 4

		void OnDestroy( SeqAct_Destroy* Action );
		void TermConstraint();
		void InitConstraint( Actor* Actor1, Actor* Actor2, Name Actor1Bone, Name Actor2Bone, Float BreakThreshold );
		void SetDisableCollision( Bool NewDisableCollision );
	};

	class RB_ConstraintDrawComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( RB_ConstraintDrawComponent, PrimitiveComponent, Engine )

	public:

		MaterialInterface* LimitMaterial; //offset = 448, size = 4
	};

	class RB_ConstraintInstance: public Object
	{
		DECLARE_PACKAGE_CLASS( RB_ConstraintInstance, Object, Engine )

	public:

		Actor* Owner; //offset = 60, size = 4
		PrimitiveComponent* OwnerComponent; //offset = 64, size = 4
		Int ConstraintIndex; //offset = 68, size = 4
		Int SceneIndex; //offset = 72, size = 4
		Bool bInHardware: 1; //offset = 76, size = 4
		Bool bLinearXPositionDrive: 1; //offset = 76, size = 4
		Bool bLinearXVelocityDrive: 1; //offset = 76, size = 4
		Bool bLinearYPositionDrive: 1; //offset = 76, size = 4
		Bool bLinearYVelocityDrive: 1; //offset = 76, size = 4
		Bool bLinearZPositionDrive: 1; //offset = 76, size = 4
		Bool bLinearZVelocityDrive: 1; //offset = 76, size = 4
		Bool bSwingPositionDrive: 1; //offset = 76, size = 4
		Bool bSwingVelocityDrive: 1; //offset = 76, size = 4
		Bool bTwistPositionDrive: 1; //offset = 76, size = 4
		Bool bTwistVelocityDrive: 1; //offset = 76, size = 4
		Bool bAngularSlerpDrive: 1; //offset = 76, size = 4
		Bool bTerminated: 1; //offset = 76, size = 4
		Pointer ConstraintData; //offset = 80, size = 4
		Vector LinearPositionTarget; //offset = 84, size = 12
		Vector LinearVelocityTarget; //offset = 96, size = 12
		Float LinearDriveSpring; //offset = 108, size = 4
		Float LinearDriveDamping; //offset = 112, size = 4
		Float LinearDriveForceLimit; //offset = 116, size = 4
		Quat AngularPositionTarget; //offset = 120, size = 16
		Vector AngularVelocityTarget; //offset = 136, size = 12
		Float AngularDriveSpring; //offset = 148, size = 4
		Float AngularDriveDamping; //offset = 152, size = 4
		Float AngularDriveForceLimit; //offset = 156, size = 4
		Pointer DummyKinActor; //offset = 160, size = 4

		void MoveKinActorTransform( Matrix NewTM );
		void SetLinearLimitSize( Float NewLimitSize );
		void SetAngularDOFLimitScale( Float InSwing1LimitScale, Float InSwing2LimitScale, Float InTwistLimitScale, RB_ConstraintSetup* InSetup );
		void SetAngularDriveParams( Float InSpring, Float InDamping, Float InForceLimit );
		void SetAngularVelocityTarget( Vector InVelTarget );
		void SetAngularPositionTarget( Quat InPosTarget );
		void SetLinearDriveParams( Float InSpring, Float InDamping, Float InForceLimit );
		void SetLinearVelocityTarget( Vector InVelTarget );
		void SetLinearPositionTarget( Vector InPosTarget );
		void SetAngularVelocityDrive( Bool bEnableSwingDrive, Bool bEnableTwistDrive );
		void SetAngularPositionDrive( Bool bEnableSwingDrive, Bool bEnableTwistDrive );
		void SetLinearVelocityDrive( Bool bEnableXDrive, Bool bEnableYDrive, Bool bEnableZDrive );
		void SetLinearPositionDrive( Bool bEnableXDrive, Bool bEnableYDrive, Bool bEnableZDrive );
		Vector GetConstraintLocation();
		void TermConstraint();
		void InitConstraint( PrimitiveComponent* PrimComp1, PrimitiveComponent* PrimComp2, RB_ConstraintSetup* Setup, Float Scale, Actor* inOwner, PrimitiveComponent* InPrimComp, Bool bMakeKinForBody1 );
	};

	class RB_CylindricalForceActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( RB_CylindricalForceActor, Actor, Engine )

	public:

		DrawCylinderComponent* RenderComponent; //offset = 508, size = 4
		Float RadialStrength; //offset = 512, size = 4
		Float RotationalStrength; //offset = 516, size = 4
		Float LiftStrength; //offset = 520, size = 4
		Float LiftFalloffHeight; //offset = 524, size = 4
		Float EscapeVelocity; //offset = 528, size = 4
		Float ForceRadius; //offset = 532, size = 4
		Float ForceTopRadius; //offset = 536, size = 4
		Float ForceHeight; //offset = 540, size = 4
		Float HeightOffset; //offset = 544, size = 4
		Bool bForceActive: 1; //offset = 548, size = 4
		Bool bForceApplyToCloth: 1; //offset = 548, size = 4
		Bool bForceApplyToFluid: 1; //offset = 548, size = 4
		Bool bForceApplyToRigidBodies: 1; //offset = 548, size = 4
		Bool bForceApplyToProjectiles: 1; //offset = 548, size = 4
		Int ForceFieldChannel; //offset = 552, size = 4
		RBCollisionChannelContainer CollideWithChannels; //offset = 556, size = 4

		void OnToggle( SeqAct_Toggle* inAction );
	};

	class RB_DistanceJointSetup: public RB_ConstraintSetup
	{
		DECLARE_PACKAGE_CLASS( RB_DistanceJointSetup, RB_ConstraintSetup, Engine )

	public:
	};

	class RB_ForceFieldExcludeVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( RB_ForceFieldExcludeVolume, Volume, Engine )

	public:

		Int ForceFieldChannel; //offset = 568, size = 4
	};

	class RB_Handle: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( RB_Handle, ActorComponent, Engine )

	public:

		PrimitiveComponent* GrabbedComponent; //offset = 88, size = 4
		Name GrabbedBoneName; //offset = 92, size = 8
		Int SceneIndex; //offset = 100, size = 4
		Bool bInHardware: 1; //offset = 104, size = 4
		Bool bRotationConstrained: 1; //offset = 104, size = 4
		Pointer HandleData; //offset = 108, size = 4
		Pointer KinActorData; //offset = 112, size = 4
		Float LinearDamping; //offset = 116, size = 4
		Float LinearStiffness; //offset = 120, size = 4
		Float AngularDamping; //offset = 124, size = 4
		Float AngularStiffness; //offset = 128, size = 4
		Vector Destination; //offset = 132, size = 12
		Vector StepSize; //offset = 144, size = 12
		Vector Location; //offset = 156, size = 12
		Bool bInterpolating: 1; //offset = 168, size = 4

		Quat GetOrientation();
		void SetOrientation( Quat NewOrientation );
		void UpdateSmoothLocation( Vector NewLocation );
		void SetSmoothLocation( Vector NewLocation, Float MoveTime );
		void SetLocation( Vector NewLocation );
		void ReleaseComponent();
		void GrabComponent( PrimitiveComponent* Component, Name InBoneName, Vector GrabLocation, Bool bConstrainRotation );
	};

	class RB_HingeSetup: public RB_ConstraintSetup
	{
		DECLARE_PACKAGE_CLASS( RB_HingeSetup, RB_ConstraintSetup, Engine )

	public:
	};

	class RB_LineImpulseActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( RB_LineImpulseActor, Actor, Engine )

	public:

		Float ImpulseStrength; //offset = 508, size = 4
		Float ImpulseRange; //offset = 512, size = 4
		Bool bVelChange: 1; //offset = 516, size = 4
		Bool bStopAtFirstHit: 1; //offset = 516, size = 4
		ArrowComponent* Arrow; //offset = 520, size = 4
		Byte ImpulseCount; //offset = 524, size = 1

		void ReplicatedEvent( Name VarName );
		void OnToggle( SeqAct_Toggle* inAction );
		void FireLineImpulse();
	};

	class RB_PrismaticSetup: public RB_ConstraintSetup
	{
		DECLARE_PACKAGE_CLASS( RB_PrismaticSetup, RB_ConstraintSetup, Engine )

	public:
	};

	class RB_PulleyJointSetup: public RB_ConstraintSetup
	{
		DECLARE_PACKAGE_CLASS( RB_PulleyJointSetup, RB_ConstraintSetup, Engine )

	public:
	};

	enum ERadialForceType
	{
		RFT_Force,
		RFT_Impulse,
	};

	class RB_RadialForceActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( RB_RadialForceActor, Actor, Engine )

	public:

		DrawSphereComponent* RenderComponent; //offset = 508, size = 4
		Float ForceStrength; //offset = 512, size = 4
		Float ForceRadius; //offset = 516, size = 4
		Float SwirlStrength; //offset = 520, size = 4
		Float SpinTorque; //offset = 524, size = 4
		Byte ForceFalloff; //offset = 528, size = 1
		Byte RadialForceMode; //offset = 529, size = 1
		Bool bForceActive: 1; //offset = 532, size = 4
		Bool bForceApplyToCloth: 1; //offset = 532, size = 4
		Bool bForceApplyToFluid: 1; //offset = 532, size = 4
		Bool bForceApplyToRigidBodies: 1; //offset = 532, size = 4
		Bool bForceApplyToProjectiles: 1; //offset = 532, size = 4
		Int ForceFieldChannel; //offset = 536, size = 4
		RBCollisionChannelContainer CollideWithChannels; //offset = 540, size = 4

		void OnToggle( SeqAct_Toggle* inAction );
	};

	class RB_RadialImpulseComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( RB_RadialImpulseComponent, PrimitiveComponent, Engine )

	public:

		Byte ImpulseFalloff; //offset = 448, size = 1
		Float ImpulseStrength; //offset = 452, size = 4
		Float ImpulseRadius; //offset = 456, size = 4
		Bool bVelChange: 1; //offset = 460, size = 4
		DrawSphereComponent* PreviewSphere; //offset = 464, size = 4

		void FireImpulse( Vector Origin );
	};

	class RB_RadialImpulseActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( RB_RadialImpulseActor, Actor, Engine )

	public:

		DrawSphereComponent* RenderComponent; //offset = 508, size = 4
		RB_RadialImpulseComponent* ImpulseComponent; //offset = 512, size = 4
		Byte ImpulseCount; //offset = 516, size = 1

		void ReplicatedEvent( Name VarName );
		void OnToggle( SeqAct_Toggle* inAction );
	};

	class RB_SkelJointSetup: public RB_ConstraintSetup
	{
		DECLARE_PACKAGE_CLASS( RB_SkelJointSetup, RB_ConstraintSetup, Engine )

	public:
	};

	class RB_Spring: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( RB_Spring, ActorComponent, Engine )

	public:

		PrimitiveComponent* Component1; //offset = 88, size = 4
		Name BoneName1; //offset = 92, size = 8
		PrimitiveComponent* Component2; //offset = 100, size = 4
		Name BoneName2; //offset = 104, size = 8
		Int SceneIndex; //offset = 112, size = 4
		Bool bInHardware: 1; //offset = 116, size = 4
		Bool bEnableForceMassRatio: 1; //offset = 116, size = 4
		Pointer SpringData; //offset = 120, size = 4
		Float TimeSinceActivation; //offset = 124, size = 4
		Float MinBodyMass; //offset = 128, size = 4
		Float SpringSaturateDist; //offset = 132, size = 4
		Float SpringMaxForce; //offset = 136, size = 4
		Float MaxForceMassRatio; //offset = 140, size = 4
		InterpCurveFloat SpringMaxForceTimeScale; //offset = 144, size = 16
		Float DampSaturateVel; //offset = 160, size = 4
		Float DampMaxForce; //offset = 164, size = 4

		void Clear();
		void SetComponents( PrimitiveComponent* InComponent1, Name InBoneName1, Vector Position1, PrimitiveComponent* InComponent2, Name InBoneName2, Vector Position2 );
	};

	class RB_StayUprightSetup: public RB_ConstraintSetup
	{
		DECLARE_PACKAGE_CLASS( RB_StayUprightSetup, RB_ConstraintSetup, Engine )

	public:
	};

	class RB_Thruster: public Actor
	{
		DECLARE_PACKAGE_CLASS( RB_Thruster, Actor, Engine )

	public:

		Bool bThrustEnabled: 1; //offset = 508, size = 4
		Float ThrustStrength; //offset = 512, size = 4

		void OnToggle( SeqAct_Toggle* Action );
	};

	class SVehicleSimBase: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( SVehicleSimBase, ActorComponent, Engine )

	public:

		Float WheelSuspensionStiffness; //offset = 88, size = 4
		Float WheelSuspensionDamping; //offset = 92, size = 4
		Float WheelSuspensionBias; //offset = 96, size = 4
		Float WheelLongExtremumSlip; //offset = 100, size = 4
		Float WheelLongExtremumValue; //offset = 104, size = 4
		Float WheelLongAsymptoteSlip; //offset = 108, size = 4
		Float WheelLongAsymptoteValue; //offset = 112, size = 4
		Float WheelLatExtremumSlip; //offset = 116, size = 4
		Float WheelLatExtremumValue; //offset = 120, size = 4
		Float WheelLatAsymptoteSlip; //offset = 124, size = 4
		Float WheelLatAsymptoteValue; //offset = 128, size = 4
		Float WheelInertia; //offset = 132, size = 4
		Bool bWheelSpeedOverride: 1; //offset = 136, size = 4
		Bool bClampedFrictionModel: 1; //offset = 136, size = 4
		Bool bAutoDrive: 1; //offset = 136, size = 4
		Float AutoDriveSteer; //offset = 140, size = 4
	};

	struct VehicleState
	{
		RigidBodyState RBState; //offset = 0, size = 56
		Byte ServerBrake; //offset = 56, size = 1
		Byte ServerGas; //offset = 57, size = 1
		Byte ServerSteering; //offset = 58, size = 1
		Byte ServerRise; //offset = 59, size = 1
		Bool bServerHandbrake: 1; //offset = 60, size = 4
		Int ServerView; //offset = 64, size = 4
	};

	class SVehicle: public Vehicle
	{
		DECLARE_PACKAGE_CLASS( SVehicle, Vehicle, Engine )

	public:

		SVehicleSimBase* SimObj; //offset = 1168, size = 4
		Array<SVehicleWheel*> Wheels; //offset = 1172, size = 12
		Vector COMOffset; //offset = 1184, size = 12
		Vector InertiaTensorMultiplier; //offset = 1196, size = 12
		Bool bStayUpright: 1; //offset = 1208, size = 4
		Bool bUseSuspensionAxis: 1; //offset = 1208, size = 4
		Bool bUpdateWheelShapes: 1; //offset = 1208, size = 4
		Bool bVehicleOnGround: 1; //offset = 1208, size = 4
		Bool bVehicleOnWater: 1; //offset = 1208, size = 4
		Bool bIsInverted: 1; //offset = 1208, size = 4
		Bool bChassisTouchingGround: 1; //offset = 1208, size = 4
		Bool bWasChassisTouchingGroundLastTick: 1; //offset = 1208, size = 4
		Bool bCanFlip: 1; //offset = 1208, size = 4
		Bool bFlipRight: 1; //offset = 1208, size = 4
		Bool bIsUprighting: 1; //offset = 1208, size = 4
		Bool bOutputHandbrake: 1; //offset = 1208, size = 4
		Bool bHoldingDownHandbrake: 1; //offset = 1208, size = 4
		Float StayUprightRollResistAngle; //offset = 1212, size = 4
		Float StayUprightPitchResistAngle; //offset = 1216, size = 4
		Float StayUprightStiffness; //offset = 1220, size = 4
		Float StayUprightDamping; //offset = 1224, size = 4
		RB_StayUprightSetup* StayUprightConstraintSetup; //offset = 1228, size = 4
		RB_ConstraintInstance* StayUprightConstraintInstance; //offset = 1232, size = 4
		Float HeavySuspensionShiftPercent; //offset = 1236, size = 4
		Float MaxSpeed; //offset = 1240, size = 4
		Float MaxAngularVelocity; //offset = 1244, size = 4
		Float TimeOffGround; //offset = 1248, size = 4
		Float UprightLiftStrength; //offset = 1252, size = 4
		Float UprightTorqueStrength; //offset = 1256, size = 4
		Float UprightTime; //offset = 1260, size = 4
		Float UprightStartTime; //offset = 1264, size = 4
		AudioComponent* EngineSound; //offset = 1268, size = 4
		AudioComponent* SquealSound; //offset = 1272, size = 4
		SoundCue* CollisionSound; //offset = 1276, size = 4
		SoundCue* EnterVehicleSound; //offset = 1280, size = 4
		SoundCue* ExitVehicleSound; //offset = 1284, size = 4
		Float CollisionIntervalSecs; //offset = 1288, size = 4
		Float SquealThreshold; //offset = 1292, size = 4
		Float SquealLatThreshold; //offset = 1296, size = 4
		Float LatAngleVolumeMult; //offset = 1300, size = 4
		Float EngineStartOffsetSecs; //offset = 1304, size = 4
		Float EngineStopOffsetSecs; //offset = 1308, size = 4
		Float LastCollisionSoundTime; //offset = 1312, size = 4
		Float OutputBrake; //offset = 1316, size = 4
		Float OutputGas; //offset = 1320, size = 4
		Float OutputSteering; //offset = 1324, size = 4
		Float OutputRise; //offset = 1328, size = 4
		Float ForwardVel; //offset = 1332, size = 4
		Int NumPoweredWheels; //offset = 1336, size = 4
		Vector BaseOffset; //offset = 1340, size = 12
		Float CamDist; //offset = 1352, size = 4
		Int DriverViewPitch; //offset = 1356, size = 4
		Int DriverViewYaw; //offset = 1360, size = 4
		VehicleState VState; //offset = 1364, size = 68
		Float AngErrorAccumulator; //offset = 1432, size = 4
		Float RadialImpulseScaling; //offset = 1436, size = 4

		void GetSVehicleDebug( Array<String> DebugInfo );
		Float HermiteEval( Float Slip, Float LatExtremumSlip, Float LatExtremumValue, Float LatAsymptoteSlip, Float LatAsymptoteValue, Float SlipSquared, Float SlipCubed, Float C0, Float C1, Float C3 );
		void DisplayWheelsDebug( HUD* HUD, Float YL, Int I, Int J, Vector WorldLoc, Vector ScreenLoc, Vector X, Vector Y, Vector Z, Color SaveColor, Float LastForceValue, Float GraphScale, Float ForceValue, Vector ForceValueLoc );
		void DisplayDebug( HUD* HUD, Float out_YL, Float out_YPos, Array<String> DebugInfo, Int I );
		void PostTeleport( Teleporter* OutTeleporter );
		void SuspensionHeavyShift( Float Delta );
		void RigidBodyCollision( PrimitiveComponent* HitComponent, PrimitiveComponent* OtherComponent, CollisionImpactData RigidCollisionData, Int ContactIndex );
		void DrivingStatusChanged();
		void VehiclePlayExitSound();
		void VehiclePlayEnterSound();
		void StopEngineSoundTimed();
		void StopEngineSound();
		void StartEngineSoundTimed();
		void StartEngineSound();
		Bool HasWheelsOnGround();
		Bool TryToDrive( Pawn* P );
		Name GetDefaultCameraMode( PlayerController* RequestedBy );
		Bool CalcCamera( Float fDeltaTime, Vector out_CamLoc, Rotator out_CamRot, Float out_FOV, Vector pos, Vector HitLocation, Vector HitNormal );
		Bool Died( Controller* Killer, Class* DamageType, Vector HitLocation );
		void AddVelocity( Vector NewVelocity, Vector HitLocation, Class* DamageType, TraceHitInfo HitInfo );
		void InitVehicleRagdoll( SkeletalMesh* RagdollMesh, PhysicsAsset* RagdollPhysAsset, Vector ActorMove );
		void TakeRadiusDamage( Controller* InstigatedBy, Float BaseDamage, Float DamageRadius, Class* DamageType, Float Momentum, Vector HurtOrigin, Bool bFullDamage, Actor* DamageCauser, Vector HitLocation, Vector Dir, Vector NewDir, Float Dist, Float DamageScale, TraceHitInfo HitInfo );
		void StopVehicleSounds();
		void TurnOff();
		void Destroyed();
		void PostInitAnimTree( SkeletalMeshComponent* SkelComp, Int WheelIndex, SVehicleWheel* Wheel );
		void PostBeginPlay();
		void SetWheelCollision( Int WheelNum, Bool bCollision );
	};

	class SVehicleSimCar: public SVehicleSimBase
	{
		DECLARE_PACKAGE_CLASS( SVehicleSimCar, SVehicleSimBase, Engine )

	public:

		Float ChassisTorqueScale; //offset = 144, size = 4
		InterpCurveFloat MaxSteerAngleCurve; //offset = 148, size = 16
		Float SteerSpeed; //offset = 164, size = 4
		Float ReverseThrottle; //offset = 168, size = 4
		Float EngineBrakeFactor; //offset = 172, size = 4
		Float MaxBrakeTorque; //offset = 176, size = 4
		Float StopThreshold; //offset = 180, size = 4
		Bool bIsDriving: 1; //offset = 184, size = 4
		Float ActualSteering; //offset = 188, size = 4
		Float TimeSinceThrottle; //offset = 192, size = 4
	};

	class SVehicleSimTank: public SVehicleSimCar
	{
		DECLARE_PACKAGE_CLASS( SVehicleSimTank, SVehicleSimCar, Engine )

	public:

		Float LeftTrackVel; //offset = 196, size = 4
		Float RightTrackVel; //offset = 200, size = 4
		Float LeftTrackTorque; //offset = 204, size = 4
		Float RightTrackTorque; //offset = 208, size = 4
		Float MaxEngineTorque; //offset = 212, size = 4
		Float EngineDamping; //offset = 216, size = 4
		Float InsideTrackTorqueFactor; //offset = 220, size = 4
		Float SteeringLatStiffnessFactor; //offset = 224, size = 4
		Float TurnInPlaceThrottle; //offset = 228, size = 4
		Float TurnMaxGripReduction; //offset = 232, size = 4
		Float TurnGripScaleRate; //offset = 236, size = 4
		Bool bTurnInPlaceOnSteer: 1; //offset = 240, size = 4
	};

	enum EWheelSide
	{
		SIDE_None,
		SIDE_Left,
	};

	class SVehicleWheel: public Component
	{
		DECLARE_PACKAGE_CLASS( SVehicleWheel, Component, Engine )

	public:

		Float Steer; //offset = 72, size = 4
		Float MotorTorque; //offset = 76, size = 4
		Float BrakeTorque; //offset = 80, size = 4
		Float ChassisTorque; //offset = 84, size = 4
		Bool bPoweredWheel: 1; //offset = 88, size = 4
		Bool bHoverWheel: 1; //offset = 88, size = 4
		Bool bCollidesVehicles: 1; //offset = 88, size = 4
		Bool bCollidesPawns: 1; //offset = 88, size = 4
		Bool bIsSquealing: 1; //offset = 88, size = 4
		Bool bWheelOnGround: 1; //offset = 88, size = 4
		Float SteerFactor; //offset = 92, size = 4
		Name SkelControlName; //offset = 96, size = 8
		SkelControlWheel* WheelControl; //offset = 104, size = 4
		Name BoneName; //offset = 108, size = 8
		Vector BoneOffset; //offset = 116, size = 12
		Float WheelRadius; //offset = 128, size = 4
		Float SuspensionTravel; //offset = 132, size = 4
		Float SuspensionSpeed; //offset = 136, size = 4
		ParticleSystem* WheelParticleSystem; //offset = 140, size = 4
		Byte Side; //offset = 144, size = 1
		Float LongSlipFactor; //offset = 148, size = 4
		Float LatSlipFactor; //offset = 152, size = 4
		Float HandbrakeLongSlipFactor; //offset = 156, size = 4
		Float HandbrakeLatSlipFactor; //offset = 160, size = 4
		Float ParkedSlipFactor; //offset = 164, size = 4
		Vector WheelPosition; //offset = 168, size = 12
		Float SpinVel; //offset = 180, size = 4
		Float LongSlipRatio; //offset = 184, size = 4
		Float LatSlipAngle; //offset = 188, size = 4
		Vector ContactNormal; //offset = 192, size = 12
		Vector LongDirection; //offset = 204, size = 12
		Vector LatDirection; //offset = 216, size = 12
		Float ContactForce; //offset = 228, size = 4
		Float LongImpulse; //offset = 232, size = 4
		Float LatImpulse; //offset = 236, size = 4
		Float DesiredSuspensionPosition; //offset = 240, size = 4
		Float SuspensionPosition; //offset = 244, size = 4
		Float CurrentRotation; //offset = 248, size = 4
		Pointer WheelShape; //offset = 252, size = 4
		Int WheelMaterialIndex; //offset = 256, size = 4
		Class* WheelPSCClass; //offset = 260, size = 4
		ParticleSystemComponent* WheelParticleComp; //offset = 264, size = 4
		Name SlipParticleParamName; //offset = 268, size = 8
	};

	class Prefab: public Object
	{
		DECLARE_PACKAGE_CLASS( Prefab, Object, Engine )

	public:

		Int PrefabVersion; //offset = 60, size = 4
		Array<Object*> PrefabArchetypes; //offset = 64, size = 12
		Array<Object*> RemovedArchetypes; //offset = 76, size = 12
		Sequence* PrefabSequence; //offset = 88, size = 4
		Texture2D* PrefabPreview; //offset = 92, size = 4
	};

	class PrefabInstance: public Actor
	{
		DECLARE_PACKAGE_CLASS( PrefabInstance, Actor, Engine )

	public:

		Prefab* TemplatePrefab; //offset = 508, size = 4
		Int TemplateVersion; //offset = 512, size = 4
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> ArchetypeToInstanceMap; //offset = 516, size = 20
		Sequence* SequenceInstance; //offset = 536, size = 4
		Int PI_PackageVersion; //offset = 540, size = 4
		Int PI_LicenseePackageVersion; //offset = 544, size = 4
		Int PI_RPGLicenseePackageVersion; //offset = 548, size = 4
		Int PI_PackageRPGGameCode; //offset = 552, size = 4
		Array<Byte> PI_Bytes; //offset = 556, size = 12
		Array<Object*> PI_CompleteObjects; //offset = 568, size = 12
		Array<Object*> PI_ReferencedObjects; //offset = 580, size = 12
		Array<String> PI_SavedNames; //offset = 592, size = 12
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> PI_ObjectMap; //offset = 604, size = 20
	};

	enum KismetVarTypes
	{
		KVT_Int,
		KVT_Float,
		KVT_Bool,
		KVT_String,
	};

	struct RemoteEventParameter
	{
		Byte VariableType; //offset = 0, size = 1
		Name ParameterName; //offset = 4, size = 8
	};

	class SequenceObject: public Object
	{
		DECLARE_PACKAGE_CLASS( SequenceObject, Object, Engine )

	public:

		Int ObjClassVersion; //offset = 60, size = 4
		Int ObjInstanceVersion; //offset = 64, size = 4
		Sequence* ParentSequence; //offset = 68, size = 4
		Int ObjPosX; //offset = 72, size = 4
		Int ObjPosY; //offset = 76, size = 4
		String ObjName; //offset = 80, size = 12
		String ObjCategory; //offset = 92, size = 12
		Color ObjColor; //offset = 104, size = 4
		Byte m_nAlpha; //offset = 108, size = 1
		String ObjComment; //offset = 112, size = 12
		Array<String> m_aObjComment; //offset = 124, size = 12
		Color m_CommentColour; //offset = 136, size = 4
		Bool bDeletable: 1; //offset = 140, size = 4
		Bool bDrawFirst: 1; //offset = 140, size = 4
		Bool bDrawLast: 1; //offset = 140, size = 4
		Bool bOutputObjCommentToScreen: 1; //offset = 140, size = 4
		Bool bSuppressAutoComment: 1; //offset = 140, size = 4
		Int DrawWidth; //offset = 144, size = 4
		Int DrawHeight; //offset = 148, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
		Bool IsValidLevelSequenceObject();
		WorldInfo* GetWorldInfo();
		void ScriptLog( String LogText, Bool bWarning );
	};

	class SequenceVariable: public SequenceObject
	{
		DECLARE_PACKAGE_CLASS( SequenceVariable, SequenceObject, Engine )

	public:

		Name VarName; //offset = 152, size = 8

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	struct SeqEventLink
	{
		Class* ExpectedType; //offset = 0, size = 4
		Array<SequenceEvent*> LinkedEvents; //offset = 4, size = 12
		String LinkDesc; //offset = 16, size = 12
		Int DrawX; //offset = 28, size = 4
		Bool bHidden: 1; //offset = 32, size = 4
	};

	struct SeqVarLink
	{
		Class* ExpectedType; //offset = 0, size = 4
		Array<SequenceVariable*> LinkedVariables; //offset = 4, size = 12
		String LinkDesc; //offset = 16, size = 12
		Name LinkVar; //offset = 28, size = 8
		Name PropertyName; //offset = 36, size = 8
		Bool bWriteable: 1; //offset = 44, size = 4
		Bool bHidden: 1; //offset = 44, size = 4
		Int MinVars; //offset = 48, size = 4
		Int MaxVars; //offset = 52, size = 4
		Int DrawX; //offset = 56, size = 4
		Property* CachedProperty; //offset = 60, size = 4
	};

	struct SeqOpOutputInputLink
	{
		SequenceOp* LinkedOp; //offset = 0, size = 4
		Int InputLinkIdx; //offset = 4, size = 4
	};

	struct SeqOpOutputLink
	{
		Array<SeqOpOutputInputLink> Links; //offset = 0, size = 12
		String LinkDesc; //offset = 12, size = 12
		Bool bHasImpulse: 1; //offset = 24, size = 4
		Bool bDisabled: 1; //offset = 24, size = 4
		Bool bDisabledPIE: 1; //offset = 24, size = 4
		Name LinkAction; //offset = 28, size = 8
		SequenceOp* LinkedOp; //offset = 36, size = 4
		Float ActivateDelay; //offset = 40, size = 4
		Int DrawY; //offset = 44, size = 4
		Bool bHidden: 1; //offset = 48, size = 4
	};

	struct SeqOpInputLink
	{
		String LinkDesc; //offset = 0, size = 12
		Bool bHasImpulse: 1; //offset = 12, size = 4
		Bool bDisabled: 1; //offset = 12, size = 4
		Bool bDisabledPIE: 1; //offset = 12, size = 4
		Name LinkAction; //offset = 16, size = 8
		SequenceOp* LinkedOp; //offset = 24, size = 4
		Int DrawY; //offset = 28, size = 4
		Bool bHidden: 1; //offset = 32, size = 4
		Float ActivateDelay; //offset = 36, size = 4
	};

	class SequenceOp: public SequenceObject
	{
		DECLARE_PACKAGE_CLASS( SequenceOp, SequenceObject, Engine )

	public:

		Bool bActive: 1; //offset = 152, size = 4
		Bool bLatentExecution: 1; //offset = 152, size = 4
		Bool bManualHandleOutputs: 1; //offset = 152, size = 4
		Bool bAutoActivateOutputLinks: 1; //offset = 152, size = 4
		Array<SeqOpInputLink> InputLinks; //offset = 156, size = 12
		Array<SeqOpOutputLink> OutputLinks; //offset = 168, size = 12
		Array<SeqVarLink> VariableLinks; //offset = 180, size = 12
		Array<SeqEventLink> EventLinks; //offset = 192, size = 12
		Int PlayerIndex; //offset = 204, size = 4
		Int ActivateCount; //offset = 208, size = 4
		Int SearchTag; //offset = 212, size = 4

		Controller* GetController( Actor* TheActor, Pawn* P, Controller* C );
		Pawn* GetPawn( Actor* TheActor, Pawn* P, Controller* C );
		void Reset();
		void PublishLinkedVariableValues();
		void PopulateLinkedVariableValues();
		void SetStringRefVars( String sLink, srValue srValue );
		void SetNameVars( String sLink, Name sValue );
		void SetObjectVars( String sLink, Object* oValue );
		void SetStringVars( String sLink, String sValue );
		void SetFloatVars( String sLink, Float fValue );
		void SetIntVars( String sLink, Int nValue );
		void SetBoolVars( String sLink, Bool bValue );
		void Deactivated();
		void Activated();
		void GetStringRefVars( Array<aStringRef> aStringRef, String sDescription );
		void GetNameVars( Array<Name> nameVars, String inDesc );
		void GetStringVars( Array<String> strVars, String inDesc );
		void GetFloatVars( Array<Float> floatVars, String inDesc );
		void GetIntVars( Array<Int> intVars, String inDesc );
		void LinkedVariables( Class* VarClass, SequenceVariable* OutVariable, String inDesc );
		void GetBoolVars( Array<Byte> boolVars, String inDesc );
		void GetInterpDataVars( Array<InterpData*> outIData, String inDesc );
		void GetObjectVars( Array<Object*> objVars, String inDesc );
		void GetLinkedObjects( Array<SequenceObject*> out_Objects, Class* ObjectType, Bool bRecurse );
		Bool HasLinkedOps( Bool bConsiderInputLinks );
	};

	class SequenceAction: public SequenceOp
	{
		DECLARE_PACKAGE_CLASS( SequenceAction, SequenceOp, Engine )

	public:

		Name HandlerName; //offset = 216, size = 8
		Bool bCallHandler: 1; //offset = 224, size = 4
		Array<Object*> Targets; //offset = 228, size = 12
	};

	class BioSeqAct_BlockForTextureStreaming: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( BioSeqAct_BlockForTextureStreaming, SequenceAction, Engine )

	public:
	};

	class BioSeqAct_SkynetEvent: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( BioSeqAct_SkynetEvent, SequenceAction, Engine )

	public:

		Byte m_eEventType; //offset = 240, size = 1
		Int m_iInt1; //offset = 244, size = 4
		Int m_iInt2; //offset = 248, size = 4
		String m_sString1; //offset = 252, size = 12
		String m_sString2; //offset = 264, size = 12
		Bool m_bIsPartyMember: 1; //offset = 276, size = 4
	};

	class BioSeqAct_SkynetStatsEvent: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( BioSeqAct_SkynetStatsEvent, SequenceAction, Engine )

	public:

		Int m_iInt1; //offset = 240, size = 4
		Int m_iInt2; //offset = 244, size = 4
		String m_sString1; //offset = 248, size = 12
		String m_sString2; //offset = 260, size = 12
		Bool m_bIsPartyMember: 1; //offset = 272, size = 4
	};

	enum EWhoTriggers
	{
		WT_PlayerOnly,
		WT_PlayerAndSquad,
		WT_Everyone,
	};

	struct QueuedActivationInfo
	{
		Actor* InOriginator; //offset = 0, size = 4
		Actor* InInstigator; //offset = 4, size = 4
		Array<Int> ActivateIndices; //offset = 8, size = 12
		Bool bPushTop: 1; //offset = 20, size = 4
	};

	class SequenceEvent: public SequenceOp
	{
		DECLARE_PACKAGE_CLASS( SequenceEvent, SequenceOp, Engine )

	public:

		Actor* Originator; //offset = 216, size = 4
		Actor* Instigator; //offset = 220, size = 4
		Float ActivationTime; //offset = 224, size = 4
		Int TriggerCount; //offset = 228, size = 4
		Int MaxTriggerCount; //offset = 232, size = 4
		Float ReTriggerDelay; //offset = 236, size = 4
		Bool bEnabled: 1; //offset = 240, size = 4
		Bool bPlayerOnly: 1; //offset = 240, size = 4
		Bool bTagListInclusionary: 1; //offset = 240, size = 4
		Bool bClientSideOnly: 1; //offset = 240, size = 4
		Byte Priority; //offset = 244, size = 1
		Byte WhoTriggers; //offset = 245, size = 1
		Array<Name> lstTags; //offset = 248, size = 12
		Int MaxWidth; //offset = 260, size = 4
		Bool bRegistered: 1; //offset = 264, size = 4
		Array<QueuedActivationInfo> QueuedActivations; //offset = 268, size = 12

		void Toggled();
		void Reset();
		Bool PassesWhoTriggers( Actor* InInstigator );
		Bool CheckActivate( Actor* InOriginator, Actor* InInstigator, Bool bTest, Array<Int> ActivateIndices, Bool bPushTop );
		void RegisterEvent();
	};

	class BioSeqEvt_LoadingScreenClosed: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( BioSeqEvt_LoadingScreenClosed, SequenceEvent, Engine )

	public:
	};

	class BioSeqVar_StrRef: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( BioSeqVar_StrRef, SequenceVariable, Engine )

	public:

		m_srValue m_srValue; //offset = 160, size = 4
	};

	class BioSeqVar_StrRefLiteral: public BioSeqVar_StrRef
	{
		DECLARE_PACKAGE_CLASS( BioSeqVar_StrRefLiteral, BioSeqVar_StrRef, Engine )

	public:

		Int m_srStringID; //offset = 164, size = 4
	};

	struct BioSoundPreLoadInfo
	{
		Object* pObject; //offset = 0, size = 4
		Int nKeyIndex; //offset = 4, size = 4
		Float fTime; //offset = 8, size = 4
	};

	class InterpData: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( InterpData, SequenceVariable, Engine )

	public:

		Float InterpLength; //offset = 160, size = 4
		Float PathBuildTime; //offset = 164, size = 4
		Array<InterpGroup*> InterpGroups; //offset = 168, size = 12
		InterpCurveEdSetup* CurveEdSetup; //offset = 180, size = 4
		Array<InterpFilter*> InterpFilters; //offset = 184, size = 12
		InterpFilter* SelectedFilter; //offset = 196, size = 4
		Array<InterpFilter*> DefaultFilters; //offset = 200, size = 12
		Float EdSectionStart; //offset = 212, size = 4
		Float EdSectionEnd; //offset = 216, size = 4
		Int m_nBioCutSceneVersion; //offset = 220, size = 4
		Array<BioSoundPreLoadInfo> m_aBioPreLoadData; //offset = 224, size = 12
	};

	class SeqAct_ActivateRemoteEvent: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ActivateRemoteEvent, SequenceAction, Engine )

	public:

		Actor* Instigator; //offset = 240, size = 4
		Name EventName; //offset = 244, size = 8
		Array<RemoteEventParameter> Parameters; //offset = 252, size = 12
	};

	class SeqAct_Latent: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Latent, SequenceAction, Engine )

	public:

		Array<Actor*> LatentActors; //offset = 240, size = 12
		Bool bAborted: 1; //offset = 252, size = 4
		Bool bCancelled: 1; //offset = 252, size = 4

		Bool Update( Float DeltaTime );
		void AbortFor( Actor* latentActor, Bool bCancel );
	};

	enum EPointSelection
	{
		PS_Normal,
		PS_Random,
	};

	class SeqAct_ActorFactory: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ActorFactory, SeqAct_Latent, Engine )

	public:

		Bool bEnabled: 1; //offset = 256, size = 4
		Bool bIsSpawning: 1; //offset = 256, size = 4
		Bool bCheckSpawnCollision: 1; //offset = 256, size = 4
		ActorFactory* Factory; //offset = 260, size = 4
		Byte PointSelection; //offset = 264, size = 1
		Array<Actor*> SpawnPoints; //offset = 268, size = 12
		Actor* LastUsedSpawn; //offset = 280, size = 4
		Int SpawnCount; //offset = 284, size = 4
		Float SpawnDelay; //offset = 288, size = 4
		Int LastSpawnIdx; //offset = 292, size = 4
		Int SpawnedCount; //offset = 296, size = 4
		Float RemainingDelay; //offset = 300, size = 4
		Vector m_vSpawnOffset; //offset = 304, size = 12
	};

	class SeqAct_ActorFactoryEx: public SeqAct_ActorFactory
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ActorFactoryEx, SeqAct_ActorFactory, Engine )

	public:
	};

	class SeqAct_SetSequenceVariable: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetSequenceVariable, SequenceAction, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_AddFloat: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_AddFloat, SeqAct_SetSequenceVariable, Engine )

	public:

		Float ValueA; //offset = 240, size = 4
		Float ValueB; //offset = 244, size = 4
		Float FloatResult; //offset = 248, size = 4
		Int IntResult; //offset = 252, size = 4
	};

	class SeqAct_AddInt: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_AddInt, SeqAct_SetSequenceVariable, Engine )

	public:

		Int ValueA; //offset = 240, size = 4
		Int ValueB; //offset = 244, size = 4
		Float FloatResult; //offset = 248, size = 4
		Int IntResult; //offset = 252, size = 4
	};

	class SeqAct_AIMoveToActor: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_AIMoveToActor, SeqAct_Latent, Engine )

	public:

		Bool bInterruptable: 1; //offset = 256, size = 4
	};

	class SeqAct_ApplySoundNode: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ApplySoundNode, SequenceAction, Engine )

	public:

		SoundCue* PlaySound; //offset = 240, size = 4
		SoundNode* ApplyNode; //offset = 244, size = 4
	};

	class SeqAct_AttachToEvent: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_AttachToEvent, SequenceAction, Engine )

	public:

		Bool bPreferController: 1; //offset = 240, size = 4
	};

	class SeqAct_CameraLookAt: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_CameraLookAt, SequenceAction, Engine )

	public:

		Bool bAffectCamera: 1; //offset = 240, size = 4
		Bool bAlwaysFocus: 1; //offset = 240, size = 4
		Bool bAdjustCamera: 1; //offset = 240, size = 4
		Bool bTurnInPlace: 1; //offset = 240, size = 4
		Bool bIgnoreTrace: 1; //offset = 240, size = 4
		Bool bAffectHead: 1; //offset = 240, size = 4
		Bool bToggleGodMode: 1; //offset = 240, size = 4
		Bool bLeaveCameraRotation: 1; //offset = 240, size = 4
		Bool bDisableInput: 1; //offset = 240, size = 4
		Bool bUsedTimer: 1; //offset = 240, size = 4
		Bool bCheckLineOfSight: 1; //offset = 240, size = 4
		Vector2D InterpSpeedRange; //offset = 244, size = 8
		Vector2D InFocusFOV; //offset = 252, size = 8
		Name FocusBoneName; //offset = 260, size = 8
		String TextDisplay; //offset = 268, size = 12
		Float TotalTime; //offset = 280, size = 4
		Float CameraFOV; //offset = 284, size = 4
		Float RemainingTime; //offset = 288, size = 4
	};

	class SeqAct_CastToFloat: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_CastToFloat, SeqAct_SetSequenceVariable, Engine )

	public:

		Int Value; //offset = 240, size = 4
		Float FloatResult; //offset = 244, size = 4
	};

	class SeqAct_CastToInt: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_CastToInt, SeqAct_SetSequenceVariable, Engine )

	public:

		Bool bTruncate: 1; //offset = 240, size = 4
		Float Value; //offset = 244, size = 4
		Int IntResult; //offset = 248, size = 4
	};

	class SeqAct_CauseDamage: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_CauseDamage, SequenceAction, Engine )

	public:

		Class* DamageType; //offset = 240, size = 4
		Float Momentum; //offset = 244, size = 4
		Float DamageAmount; //offset = 248, size = 4
		Actor* Instigator; //offset = 252, size = 4
	};

	class SeqAct_CauseDamageRadial: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_CauseDamageRadial, SequenceAction, Engine )

	public:

		Class* DamageType; //offset = 240, size = 4
		Float Momentum; //offset = 244, size = 4
		Float DamageAmount; //offset = 248, size = 4
		Float DamageRadius; //offset = 252, size = 4
		Bool bDamageFalloff: 1; //offset = 256, size = 4
		Actor* Instigator; //offset = 260, size = 4
	};

	class SeqAct_CommitMapChange: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_CommitMapChange, SequenceAction, Engine )

	public:
	};

	class SeqAct_CrossFadeMusicTracks: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_CrossFadeMusicTracks, SeqAct_Latent, Engine )

	public:

		Name TrackBankName; //offset = 256, size = 8
		Name CurrTrackType; //offset = 264, size = 8
		AudioComponent* CurrPlayingTrack; //offset = 272, size = 4
		Float AdjustVolumeDuration; //offset = 276, size = 4
		Float AdjustVolumeLevel; //offset = 280, size = 4
		Float NextTrackToPlayAt; //offset = 284, size = 4
		MusicTrackStruct NextTrackToPlay; //offset = 288, size = 36

		void StopAllMusicManagerSounds();
		void ClientSideCrossFadeTrackImmediately( MusicTrackStruct TrackToPlay );
		void CrossFadeTrack( MusicTrackStruct TrackToPlay );
	};

	class SeqAct_Delay: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Delay, SeqAct_Latent, Engine )

	public:

		Bool bDelayActive: 1; //offset = 256, size = 4
		Float DefaultDuration; //offset = 260, size = 4
		Float Duration; //offset = 264, size = 4
		Float LastUpdateTime; //offset = 268, size = 4
		Float RemainingTime; //offset = 272, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_DelaySwitch: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_DelaySwitch, SeqAct_Latent, Engine )

	public:

		Int LinkCount; //offset = 256, size = 4
		Int CurrentIdx; //offset = 260, size = 4
		Float SwitchDelay; //offset = 264, size = 4
		Float NextLinkTime; //offset = 268, size = 4
	};

	class SeqAct_DivideFloat: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_DivideFloat, SeqAct_SetSequenceVariable, Engine )

	public:

		Float ValueA; //offset = 240, size = 4
		Float ValueB; //offset = 244, size = 4
		Float FloatResult; //offset = 248, size = 4
		Int IntResult; //offset = 252, size = 4
	};

	class SeqAct_DivideInt: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_DivideInt, SeqAct_SetSequenceVariable, Engine )

	public:

		Int ValueA; //offset = 240, size = 4
		Int ValueB; //offset = 244, size = 4
		Float FloatResult; //offset = 248, size = 4
		Int IntResult; //offset = 252, size = 4
	};

	class SeqAct_FinishSequence: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_FinishSequence, SequenceAction, Engine )

	public:

		String OutputLabel; //offset = 240, size = 12
	};

	class SeqAct_ForceGarbageCollection: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ForceGarbageCollection, SeqAct_Latent, Engine )

	public:
	};

	class SeqAct_ForceMaterialMipsResident: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ForceMaterialMipsResident, SeqAct_Latent, Engine )

	public:

		Float ForceDuration; //offset = 256, size = 4
		Array<MaterialInterface*> ForceMaterials; //offset = 260, size = 12
		Float RemainingTime; //offset = 272, size = 4
		Array<Texture2D*> ModifiedTextures; //offset = 276, size = 12
	};

	class SeqAct_Gate: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Gate, SequenceAction, Engine )

	public:

		Bool bOpen: 1; //offset = 240, size = 4
		Int AutoCloseCount; //offset = 244, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_GetDistance: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_GetDistance, SequenceAction, Engine )

	public:

		Float Distance; //offset = 240, size = 4
	};

	class SeqAct_GetProperty: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_GetProperty, SequenceAction, Engine )

	public:

		Name PropertyName; //offset = 240, size = 8
	};

	class SeqAct_GetVelocity: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_GetVelocity, SequenceAction, Engine )

	public:

		Float Velocity; //offset = 240, size = 4
	};

	struct CameraCutInfo
	{
		Vector Location; //offset = 0, size = 12
		Float TimeStamp; //offset = 12, size = 4
	};

	struct SavedTransform
	{
		Vector Location; //offset = 0, size = 12
		Rotator Rotation; //offset = 12, size = 12
	};

	class SeqAct_Interp: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Interp, SeqAct_Latent, Engine )

	public:

		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> SavedActorTransforms; //offset = 256, size = 20
		Float PlayRate; //offset = 276, size = 4
		Float Position; //offset = 280, size = 4
		Float ForceStartPosition; //offset = 284, size = 4
		Bool bIsPlaying: 1; //offset = 288, size = 4
		Bool bPaused: 1; //offset = 288, size = 4
		Bool bResetPositionOnFinish: 1; //offset = 288, size = 4
		Bool bFreeAnimsetsOnFinish: 1; //offset = 288, size = 4
		Bool bLooping: 1; //offset = 288, size = 4
		Bool bRewindOnPlay: 1; //offset = 288, size = 4
		Bool bNoResetOnRewind: 1; //offset = 288, size = 4
		Bool bRewindIfAlreadyPlaying: 1; //offset = 288, size = 4
		Bool bReversePlayback: 1; //offset = 288, size = 4
		Bool bInterpForPathBuilding: 1; //offset = 288, size = 4
		Bool bForceStartPos: 1; //offset = 288, size = 4
		Bool bClientSideOnly: 1; //offset = 288, size = 4
		Bool bSkipUpdateIfNotVisible: 1; //offset = 288, size = 4
		Bool bIsSkippable: 1; //offset = 288, size = 4
		Bool bBlockForPriming: 1; //offset = 288, size = 4
		Bool bBioDryRunRequired: 1; //offset = 288, size = 4
		Bool bIsBeingEdited: 1; //offset = 288, size = 4
		Bool bTexturesPrimed: 1; //offset = 288, size = 4
		Bool bPrimePhase: 1; //offset = 288, size = 4
		Bool m_bBioPreLoadStarted: 1; //offset = 288, size = 4
		Bool m_bBioIsUnderLoadingScreen: 1; //offset = 288, size = 4
		Bool m_bBioSkipToEnd: 1; //offset = 288, size = 4
		Bool m_bBioHACK_StopPinFired: 1; //offset = 288, size = 4
		Array<CoverLink*> LinkedCover; //offset = 292, size = 12
		Int nTexturesPrimed; //offset = 304, size = 4
		InterpData* InterpData; //offset = 308, size = 4
		Array<InterpGroupInst*> GroupInst; //offset = 312, size = 12
		Class* ReplicatedActorClass; //offset = 324, size = 4
		MatineeActor* ReplicatedActor; //offset = 328, size = 4
		Array<CameraCutInfo> CameraCuts; //offset = 332, size = 12
		Int m_nBioCurrentPreLoadIndex; //offset = 344, size = 4

		void Reset();
		void AddPlayerToDirectorTracks( PlayerController* PC );
		void Stop();
		void SetPosition( Float NewPosition, Bool bJump );
	};

	class SeqAct_IsInObjectList: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_IsInObjectList, SequenceAction, Engine )

	public:

		Bool bCheckForAllObjects: 1; //offset = 240, size = 4
		Bool bObjectFound: 1; //offset = 240, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_LevelStreamingBase: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_LevelStreamingBase, SeqAct_Latent, Engine )

	public:

		Bool bMakeVisibleAfterLoad: 1; //offset = 256, size = 4
		Bool bShouldBlockOnLoad: 1; //offset = 256, size = 4
		Bool bNeverAutoStreamOut: 1; //offset = 256, size = 4
	};

	class SeqAct_LevelStreaming: public SeqAct_LevelStreamingBase
	{
		DECLARE_PACKAGE_CLASS( SeqAct_LevelStreaming, SeqAct_LevelStreamingBase, Engine )

	public:

		LevelStreaming* Level; //offset = 260, size = 4
		Name LevelName; //offset = 264, size = 8
	};

	class SeqAct_LevelVisibility: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_LevelVisibility, SeqAct_Latent, Engine )

	public:

		LevelStreaming* Level; //offset = 256, size = 4
		Name LevelName; //offset = 260, size = 8
	};

	class SeqAct_Log: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Log, SequenceAction, Engine )

	public:

		Bool bOutputToScreen: 1; //offset = 240, size = 4
		Bool bIncludeObjComment: 1; //offset = 240, size = 4
		Float TargetDuration; //offset = 244, size = 4
		Vector TargetOffset; //offset = 248, size = 12

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_ModifyObjectList: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ModifyObjectList, SeqAct_SetSequenceVariable, Engine )

	public:

		Int ListEntriesCount; //offset = 240, size = 4
	};

	struct LevelStreamingNameCombo
	{
		LevelStreaming* Level; //offset = 0, size = 4
		Name LevelName; //offset = 4, size = 8
	};

	class SeqAct_MultiLevelStreaming: public SeqAct_LevelStreamingBase
	{
		DECLARE_PACKAGE_CLASS( SeqAct_MultiLevelStreaming, SeqAct_LevelStreamingBase, Engine )

	public:

		Array<LevelStreamingNameCombo> Levels; //offset = 260, size = 12
	};

	class SeqAct_MultiplyFloat: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_MultiplyFloat, SeqAct_SetSequenceVariable, Engine )

	public:

		Float ValueA; //offset = 240, size = 4
		Float ValueB; //offset = 244, size = 4
		Float FloatResult; //offset = 248, size = 4
		Int IntResult; //offset = 252, size = 4
	};

	class SeqAct_MultiplyInt: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_MultiplyInt, SeqAct_SetSequenceVariable, Engine )

	public:

		Int ValueA; //offset = 240, size = 4
		Int ValueB; //offset = 244, size = 4
		Float FloatResult; //offset = 248, size = 4
		Int IntResult; //offset = 252, size = 4
	};

	class SeqAct_PlayCameraAnim: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_PlayCameraAnim, SeqAct_Latent, Engine )

	public:

		CameraAnim* CameraAnim; //offset = 256, size = 4
		Bool bLoop: 1; //offset = 260, size = 4
		Bool bRandomStartTime: 1; //offset = 260, size = 4
		Float BlendInTime; //offset = 264, size = 4
		Float BlendOutTime; //offset = 268, size = 4
		Float Rate; //offset = 272, size = 4
		Float IntensityScale; //offset = 276, size = 4
		Bool bStopped: 1; //offset = 280, size = 4
		Float AnimTimeRemaining; //offset = 284, size = 4
	};

	class SeqAct_PlayFaceFXAnim: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_PlayFaceFXAnim, SequenceAction, Engine )

	public:

		FaceFXAnimSet* FaceFXAnimSetRef; //offset = 240, size = 4
		String FaceFXGroupName; //offset = 244, size = 12
		String FaceFXAnimName; //offset = 256, size = 12
	};

	class SeqAct_PlaySound: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_PlaySound, SeqAct_Latent, Engine )

	public:

		SoundCue* PlaySound; //offset = 256, size = 4
		Float ExtraDelay; //offset = 260, size = 4
		Float SoundDuration; //offset = 264, size = 4
		Float FadeInTime; //offset = 268, size = 4
		Float FadeOutTime; //offset = 272, size = 4
		Float VolumeMultiplier; //offset = 276, size = 4
		Float PitchMultiplier; //offset = 280, size = 4
		Bool bSuppressSubtitles: 1; //offset = 284, size = 4
		Bool bStopped: 1; //offset = 284, size = 4
	};

	class SeqAct_Possess: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Possess, SequenceAction, Engine )

	public:

		Pawn* PawnToPossess; //offset = 240, size = 4
		Bool bKillOldPawn: 1; //offset = 244, size = 4
		Bool bTryToLeaveVehicle: 1; //offset = 244, size = 4
	};

	class SeqAct_PrepareMapChange: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_PrepareMapChange, SeqAct_Latent, Engine )

	public:

		Name MainLevelName; //offset = 256, size = 8
		Array<Name> InitiallyLoadedSecondaryLevelNames; //offset = 264, size = 12
		Bool bIsHighPriority: 1; //offset = 276, size = 4
	};

	class SeqAct_Switch: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Switch, SequenceAction, Engine )

	public:

		Int LinkCount; //offset = 240, size = 4
		Int IncrementAmount; //offset = 244, size = 4
		Bool bLooping: 1; //offset = 248, size = 4
		Bool bAutoDisableLinks: 1; //offset = 248, size = 4
		Array<Int> Indices; //offset = 252, size = 12

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_RandomSwitch: public SeqAct_Switch
	{
		DECLARE_PACKAGE_CLASS( SeqAct_RandomSwitch, SeqAct_Switch, Engine )

	public:
	};

	struct SwitchRange
	{
		Int Min; //offset = 0, size = 4
		Int Max; //offset = 4, size = 4
	};

	class SeqAct_RangeSwitch: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_RangeSwitch, SequenceAction, Engine )

	public:

		Array<SwitchRange> Ranges; //offset = 240, size = 12
	};

	class SeqAct_SetBlockRigidBody: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetBlockRigidBody, SequenceAction, Engine )

	public:
	};

	class SeqAct_SetBool: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetBool, SeqAct_SetSequenceVariable, Engine )

	public:

		Bool Target: 1; //offset = 240, size = 4
		Bool DefaultValue: 1; //offset = 240, size = 4
	};

	class SeqAct_SetCameraTarget: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetCameraTarget, SequenceAction, Engine )

	public:

		Actor* CameraTarget; //offset = 240, size = 4
		ViewTargetTransitionParams TransitionParams; //offset = 244, size = 12
	};

	class SeqAct_SetDOFParams: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetDOFParams, SeqAct_Latent, Engine )

	public:

		Float FalloffExponent; //offset = 256, size = 4
		Float BlurKernelSize; //offset = 260, size = 4
		Float MaxNearBlurAmount; //offset = 264, size = 4
		Float MaxFarBlurAmount; //offset = 268, size = 4
		Color ModulateBlurColor; //offset = 272, size = 4
		Float FocusInnerRadius; //offset = 276, size = 4
		Float FocusDistance; //offset = 280, size = 4
		Vector FocusPosition; //offset = 284, size = 12
		Float InterpolateSeconds; //offset = 296, size = 4
		Float InterpolateElapsed; //offset = 300, size = 4
		Float OldFalloffExponent; //offset = 304, size = 4
		Float OldBlurKernelSize; //offset = 308, size = 4
		Float OldMaxNearBlurAmount; //offset = 312, size = 4
		Float OldMaxFarBlurAmount; //offset = 316, size = 4
		Color OldModulateBlurColor; //offset = 320, size = 4
		Float OldFocusInnerRadius; //offset = 324, size = 4
		Float OldFocusDistance; //offset = 328, size = 4
		Vector OldFocusPosition; //offset = 332, size = 12
	};

	class SeqAct_SetFloat: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetFloat, SeqAct_SetSequenceVariable, Engine )

	public:

		Float Target; //offset = 240, size = 4
		Float Value; //offset = 244, size = 4
	};

	class SeqAct_SetInt: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetInt, SeqAct_SetSequenceVariable, Engine )

	public:

		Int Target; //offset = 240, size = 4
		Int Value; //offset = 244, size = 4
	};

	class SeqAct_SetMaterial: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetMaterial, SequenceAction, Engine )

	public:

		MaterialInterface* NewMaterial; //offset = 240, size = 4
		Int MaterialIndex; //offset = 244, size = 4
	};

	class SeqAct_SetMatInstScalarParam: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetMatInstScalarParam, SequenceAction, Engine )

	public:

		MaterialInstanceConstant* MatInst; //offset = 240, size = 4
		Name ParamName; //offset = 244, size = 8
		Float ScalarValue; //offset = 252, size = 4
	};

	class SeqAct_SetMatInstTexParam: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetMatInstTexParam, SequenceAction, Engine )

	public:

		MaterialInstanceConstant* MatInst; //offset = 240, size = 4
		Texture* NewTexture; //offset = 244, size = 4
		Name ParamName; //offset = 248, size = 8
	};

	class SeqAct_SetMatInstVectorParam: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetMatInstVectorParam, SequenceAction, Engine )

	public:

		MaterialInstanceConstant* MatInst; //offset = 240, size = 4
		Name ParamName; //offset = 244, size = 8
		LinearColor VectorValue; //offset = 252, size = 16
	};

	class SeqAct_SetMotionBlurParams: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetMotionBlurParams, SeqAct_Latent, Engine )

	public:

		Float MotionBlurAmount; //offset = 256, size = 4
		Float InterpolateSeconds; //offset = 260, size = 4
		Float InterpolateElapsed; //offset = 264, size = 4
		Float OldMotionBlurAmount; //offset = 268, size = 4
	};

	class SeqAct_SetMusicTrack: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetMusicTrack, SequenceAction, Engine )

	public:

		Name TrackBankName; //offset = 240, size = 8
	};

	class SeqAct_SetObject: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetObject, SeqAct_SetSequenceVariable, Engine )

	public:

		Object* DefaultValue; //offset = 240, size = 4
		Object* Value; //offset = 244, size = 4
	};

	class SeqAct_SetPhysics: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetPhysics, SequenceAction, Engine )

	public:

		Byte newPhysics; //offset = 240, size = 1
	};

	class SeqAct_SetRigidBodyIgnoreVehicles: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetRigidBodyIgnoreVehicles, SequenceAction, Engine )

	public:
	};

	class SeqAct_SetString: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetString, SeqAct_SetSequenceVariable, Engine )

	public:

		String Target; //offset = 240, size = 12
		String Value; //offset = 252, size = 12
	};

	class SeqAct_StreamInTextures: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_StreamInTextures, SeqAct_Latent, Engine )

	public:

		Bool bLocationBased: 1; //offset = 256, size = 4
		Bool bStreamingActive: 1; //offset = 256, size = 4
		Float Seconds; //offset = 260, size = 4
		Float StopTimestamp; //offset = 264, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_SubtractFloat: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SubtractFloat, SeqAct_SetSequenceVariable, Engine )

	public:

		Float ValueA; //offset = 240, size = 4
		Float ValueB; //offset = 244, size = 4
		Float FloatResult; //offset = 248, size = 4
		Int IntResult; //offset = 252, size = 4
	};

	class SeqAct_SubtractInt: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SubtractInt, SeqAct_SetSequenceVariable, Engine )

	public:

		Int ValueA; //offset = 240, size = 4
		Int ValueB; //offset = 244, size = 4
		Float FloatResult; //offset = 248, size = 4
		Int IntResult; //offset = 252, size = 4
	};

	class SeqAct_Timer: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Timer, SequenceAction, Engine )

	public:

		Float ActivationTime; //offset = 240, size = 4
		Float Time; //offset = 244, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_Toggle: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Toggle, SequenceAction, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_ToggleDynamicChannel: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ToggleDynamicChannel, SequenceAction, Engine )

	public:
	};

	class SeqAct_ToggleHUD: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ToggleHUD, SequenceAction, Engine )

	public:

		Bool bBreakHideOnConversation: 1; //offset = 240, size = 4
		Bool bLevelStartupEventForceOff: 1; //offset = 240, size = 4

		void DoActivatedWork();
		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_Trace: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Trace, SequenceAction, Engine )

	public:

		Bool bTraceActors: 1; //offset = 240, size = 4
		Bool bTraceWorld: 1; //offset = 240, size = 4
		Vector TraceExtent; //offset = 244, size = 12
		Vector StartOffset; //offset = 256, size = 12
		Vector EndOffset; //offset = 268, size = 12
		Object* HitObject; //offset = 280, size = 4
		Float Distance; //offset = 284, size = 4
	};

	class SeqAct_WaitForLevelsVisible: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WaitForLevelsVisible, SeqAct_Latent, Engine )

	public:

		Array<Name> LevelNames; //offset = 256, size = 12
		Bool bShouldBlockOnLoad: 1; //offset = 268, size = 4
	};

	class SequenceCondition: public SequenceOp
	{
		DECLARE_PACKAGE_CLASS( SequenceCondition, SequenceOp, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqCond_CompareBool: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_CompareBool, SequenceCondition, Engine )

	public:
	};

	class SeqCond_CompareFloat: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_CompareFloat, SequenceCondition, Engine )

	public:

		Float ValueA; //offset = 216, size = 4
		Float ValueB; //offset = 220, size = 4
	};

	class SeqCond_CompareInt: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_CompareInt, SequenceCondition, Engine )

	public:

		Int ValueA; //offset = 216, size = 4
		Int ValueB; //offset = 220, size = 4
	};

	class SeqCond_CompareName: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_CompareName, SequenceCondition, Engine )

	public:

		Name ValueA; //offset = 216, size = 8
		Name ValueB; //offset = 224, size = 8
	};

	class SeqCond_CompareObject: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_CompareObject, SequenceCondition, Engine )

	public:
	};

	class SeqCond_CompareString: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_CompareString, SequenceCondition, Engine )

	public:

		String ValueA; //offset = 216, size = 12
		String ValueB; //offset = 228, size = 12
	};

	class SeqCond_GetServerType: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_GetServerType, SequenceCondition, Engine )

	public:
	};

	class SeqCond_Increment: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_Increment, SequenceCondition, Engine )

	public:

		Int IncrementAmount; //offset = 216, size = 4
		Int ValueA; //offset = 220, size = 4
		Int ValueB; //offset = 224, size = 4
	};

	class SeqCond_IncrementFloat: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_IncrementFloat, SequenceCondition, Engine )

	public:

		Float IncrementAmount; //offset = 216, size = 4
		Float ValueA; //offset = 220, size = 4
		Float ValueB; //offset = 224, size = 4
	};

	class SeqCond_IsInCombat: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_IsInCombat, SequenceCondition, Engine )

	public:
	};

	class SeqCond_IsLoggedIn: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_IsLoggedIn, SequenceCondition, Engine )

	public:

		Int NumNeededLoggedIn; //offset = 216, size = 4

		Bool CheckLogins(, Int LoggedInCount, Int Count, OnlineSubsystem* OnlineSub, PlayerInt PlayerInt );
	};

	class SeqCond_IsSameTeam: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_IsSameTeam, SequenceCondition, Engine )

	public:
	};

	class SeqCond_SwitchBase: public SequenceCondition
	{
		DECLARE_PACKAGE_CLASS( SeqCond_SwitchBase, SequenceCondition, Engine )

	public:

		void RemoveValueEntry( Int RemoveIndex );
		void InsertValueEntry( Int InsertIndex );
		Bool IsFallThruEnabled( Int ValueIndex );
		void VerifyDefaultCaseValue();
	};

	struct SwitchClassInfo
	{
		Name ClassName; //offset = 0, size = 8
		Byte bFallThru; //offset = 8, size = 1
	};

	class SeqCond_SwitchClass: public SeqCond_SwitchBase
	{
		DECLARE_PACKAGE_CLASS( SeqCond_SwitchClass, SeqCond_SwitchBase, Engine )

	public:

		Array<SwitchClassInfo> ClassArray; //offset = 216, size = 12

		void RemoveValueEntry( Int RemoveIndex );
		void InsertValueEntry( Int InsertIndex );
		Bool IsFallThruEnabled( Int ValueIndex );
		void VerifyDefaultCaseValue();
	};

	struct SwitchNameCase
	{
		Name NameValue; //offset = 0, size = 8
		Bool bFallThru: 1; //offset = 8, size = 4
	};

	class SeqCond_SwitchName: public SeqCond_SwitchBase
	{
		DECLARE_PACKAGE_CLASS( SeqCond_SwitchName, SeqCond_SwitchBase, Engine )

	public:

		Array<SwitchNameCase> SupportedValues; //offset = 216, size = 12

		void RemoveValueEntry( Int RemoveIndex );
		void InsertValueEntry( Int InsertIndex );
		Bool IsFallThruEnabled( Int ValueIndex );
		void VerifyDefaultCaseValue();
	};

	struct SwitchObjectCase
	{
		Object* ObjectValue; //offset = 0, size = 4
		Bool bFallThru: 1; //offset = 4, size = 4
		Bool bDefaultValue: 1; //offset = 4, size = 4
	};

	class SeqCond_SwitchObject: public SeqCond_SwitchBase
	{
		DECLARE_PACKAGE_CLASS( SeqCond_SwitchObject, SeqCond_SwitchBase, Engine )

	public:

		Array<SwitchObjectCase> SupportedValues; //offset = 216, size = 12
		Class* MetaClass; //offset = 228, size = 4

		void RemoveValueEntry( Int RemoveIndex );
		void InsertValueEntry( Int InsertIndex );
		Bool IsFallThruEnabled( Int ValueIndex );
		void VerifyDefaultCaseValue( Int I );
	};

	class SeqEvent_AISeeEnemy: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_AISeeEnemy, SequenceEvent, Engine )

	public:

		Float MaxSightDistance; //offset = 280, size = 4
	};

	class SeqEvent_Console: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_Console, SequenceEvent, Engine )

	public:

		Name ConsoleEventName; //offset = 280, size = 8
		String EventDesc; //offset = 288, size = 12
	};

	class SeqEvent_ConstraintBroken: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_ConstraintBroken, SequenceEvent, Engine )

	public:
	};

	class SeqEvent_Destroyed: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_Destroyed, SequenceEvent, Engine )

	public:
	};

	class SeqEvent_GetInventory: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_GetInventory, SequenceEvent, Engine )

	public:
	};

	class SeqEvent_LevelBeginning: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_LevelBeginning, SequenceEvent, Engine )

	public:
	};

	class SeqEvent_LevelLoaded: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_LevelLoaded, SequenceEvent, Engine )

	public:
	};

	class SeqEvent_LevelStartup: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_LevelStartup, SequenceEvent, Engine )

	public:
	};

	class SeqEvent_Mover: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_Mover, SequenceEvent, Engine )

	public:

		Float StayOpenTime; //offset = 280, size = 4

		void NotifyFinishedOpen( Array<Int> ActivateIndices );
		void NotifyDetached( Actor* Other, Pawn* P, Array<Int> ActivateIndices );
		void NotifyAttached( Actor* Other, Array<Int> ActivateIndices );
		void NotifyEncroachingOn( Actor* Hit, SeqVar_Object* ObjVar, Array<Int> ActivateIndices );
		void RegisterEvent( InterpActor* Mover );
	};

	class SeqEvent_ProjectileLanded: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_ProjectileLanded, SequenceEvent, Engine )

	public:

		Float MaxDistance; //offset = 280, size = 4
	};

	class SeqEvent_RemoteEvent: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_RemoteEvent, SequenceEvent, Engine )

	public:

		Name EventName; //offset = 280, size = 8
		Array<RemoteEventParameter> Parameters; //offset = 288, size = 12

		SeqEvent_RemoteEvent* FindRemoteEvent( Name fnEventName );
	};

	class SeqEvent_RigidBodyCollision: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_RigidBodyCollision, SequenceEvent, Engine )

	public:

		Float MinCollisionVelocity; //offset = 280, size = 4
	};

	class SeqEvent_SeeDeath: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_SeeDeath, SequenceEvent, Engine )

	public:
	};

	class SeqEvent_SequenceActivated: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_SequenceActivated, SequenceEvent, Engine )

	public:

		String InputLabel; //offset = 280, size = 12
	};

	class SeqEvent_Touch: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_Touch, SequenceEvent, Engine )

	public:

		Array<Class*> ClassProximityTypes; //offset = 280, size = 12
		Array<Class*> IgnoredClassProximityTypes; //offset = 292, size = 12
		Bool bForceOverlapping: 1; //offset = 304, size = 4
		Bool bUseInstigator: 1; //offset = 304, size = 4
		Bool m_bIgnoreVehicleTransitions: 1; //offset = 304, size = 4
		Bool bAllowDeadPawns: 1; //offset = 304, size = 4
		Array<Actor*> TouchedList; //offset = 308, size = 12

		void NotifyTouchingPawnDied( Pawn* P );
		void Toggled( Actor* TouchingActor );
		Bool CheckUnTouchActivate( Actor* InOriginator, Actor* InInstigator, Bool bTest );
		Bool CheckTouchActivate( Actor* InOriginator, Actor* InInstigator, Bool bTest );
	};

	class SeqEvent_Used: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_Used, SequenceEvent, Engine )

	public:

		Bool bAimToInteract: 1; //offset = 280, size = 4
		Float InteractDistance; //offset = 284, size = 4
		String InteractText; //offset = 288, size = 12
		Texture2D* InteractIcon; //offset = 300, size = 4
	};

	struct ActivateOp
	{
		SequenceOp* ActivatorOp; //offset = 0, size = 4
		SequenceOp* Op; //offset = 4, size = 4
		Int InputIdx; //offset = 8, size = 4
		Float RemainingDelay; //offset = 12, size = 4
	};

	class Sequence: public SequenceOp
	{
		DECLARE_PACKAGE_CLASS( Sequence, SequenceOp, Engine )

	public:

		Bool IsLocalized: 1; //offset = 216, size = 4
		Bool bEnabled: 1; //offset = 216, size = 4
		Pointer LogFile; //offset = 220, size = 4
		Array<SequenceObject*> SequenceObjects; //offset = 224, size = 12
		Array<SequenceOp*> ActiveSequenceOps; //offset = 236, size = 12
		Array<Sequence*> NestedSequences; //offset = 248, size = 12
		Array<SequenceEvent*> UnregisteredEvents; //offset = 260, size = 12
		Array<ActivateOp> DelayedActivatedOps; //offset = 272, size = 12
		Int DefaultViewX; //offset = 284, size = 4
		Int DefaultViewY; //offset = 288, size = 4
		Float DefaultViewZoom; //offset = 292, size = 4
		Array<SequenceObject*> m_aBioNotifyOfStasis; //offset = 296, size = 12
		Array<BioDynamicAnimSet*> m_aBioDynAnimSets; //offset = 308, size = 12
		Array<Sequence*> m_aBioPreTickedSequences; //offset = 320, size = 12
		Int m_nTotalRecursiveKismetCount; //offset = 332, size = 4
		Int m_nTotalRecursiveMemoryUsage; //offset = 336, size = 4
		Int m_nTotalRecursiveSequences; //offset = 340, size = 4
		Float m_nApproximateKismetLoadTime; //offset = 344, size = 4
		Bool m_bBioForceReUpdate: 1; //offset = 348, size = 4

		void SetEnabled( Bool bInEnabled );
		void Reset( Int I, SequenceOp* Op );
		void FindSeqObjectsByClass( Class* DesiredClass, Bool bRecursive, Array<SequenceObject*> OutputObjects );
	};

	class SequenceFrame: public SequenceObject
	{
		DECLARE_PACKAGE_CLASS( SequenceFrame, SequenceObject, Engine )

	public:

		Int SizeX; //offset = 152, size = 4
		Int SizeY; //offset = 156, size = 4
		Int BorderWidth; //offset = 160, size = 4
		Bool bDrawBox: 1; //offset = 164, size = 4
		Bool bFilled: 1; //offset = 164, size = 4
		Bool bTileFill: 1; //offset = 164, size = 4
		Color BorderColor; //offset = 168, size = 4
		Color FillColor; //offset = 172, size = 4
		Texture2D* FillTexture; //offset = 176, size = 4
		Material* FillMaterial; //offset = 180, size = 4
	};

	class SequenceFrameWrapped: public SequenceFrame
	{
		DECLARE_PACKAGE_CLASS( SequenceFrameWrapped, SequenceFrame, Engine )

	public:
	};

	class SequenceReference: public Sequence
	{
		DECLARE_PACKAGE_CLASS( SequenceReference, Sequence, Engine )

	public:

		Sequence* oSequenceReference; //offset = 352, size = 4
		Sequence* oTemplateSequence; //offset = 356, size = 4
		Package* oDependentPackage; //offset = 360, size = 4
	};

	class SeqVar_Bool: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqVar_Bool, SequenceVariable, Engine )

	public:

		Int bValue; //offset = 160, size = 4
	};

	class SeqVar_External: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqVar_External, SequenceVariable, Engine )

	public:

		Class* ExpectedType; //offset = 160, size = 4
		String VariableLabel; //offset = 164, size = 12
	};

	class SeqVar_Float: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqVar_Float, SequenceVariable, Engine )

	public:

		Float FloatValue; //offset = 160, size = 4
	};

	class SeqVar_Int: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqVar_Int, SequenceVariable, Engine )

	public:

		Int IntValue; //offset = 160, size = 4
	};

	class SeqVar_Object: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqVar_Object, SequenceVariable, Engine )

	public:

		Object* ObjValue; //offset = 160, size = 4

		void SetObjectValue( Object* NewValue );
		Object* GetObjectValue();
	};

	class SeqVar_MusicTrack: public SeqVar_Object
	{
		DECLARE_PACKAGE_CLASS( SeqVar_MusicTrack, SeqVar_Object, Engine )

	public:

		MusicTrackStruct MusicTrack; //offset = 164, size = 36
	};

	class SeqVar_MusicTrackBank: public SeqVar_Object
	{
		DECLARE_PACKAGE_CLASS( SeqVar_MusicTrackBank, SeqVar_Object, Engine )

	public:

		Array<MusicTrackStruct> MusicTrackBank; //offset = 164, size = 12
	};

	class SeqVar_Name: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqVar_Name, SequenceVariable, Engine )

	public:

		Name NameValue; //offset = 160, size = 8
	};

	class SeqVar_Named: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqVar_Named, SequenceVariable, Engine )

	public:

		Class* ExpectedType; //offset = 160, size = 4
		Name FindVarName; //offset = 164, size = 8
		Bool bStatusIsOk: 1; //offset = 172, size = 4
	};

	class SeqVar_ObjectList: public SeqVar_Object
	{
		DECLARE_PACKAGE_CLASS( SeqVar_ObjectList, SeqVar_Object, Engine )

	public:

		Array<Object*> ObjList; //offset = 164, size = 12

		void SetObjectValue( Object* NewValue );
		Object* GetObjectValue();
	};

	class SeqVar_ObjectVolume: public SeqVar_Object
	{
		DECLARE_PACKAGE_CLASS( SeqVar_ObjectVolume, SeqVar_Object, Engine )

	public:

		Float LastUpdateTime; //offset = 164, size = 4
		Array<Object*> ContainedObjects; //offset = 168, size = 12
		Array<Class*> ExcludeClassList; //offset = 180, size = 12
		Bool bCollidingOnly: 1; //offset = 192, size = 4
	};

	class SeqVar_Player: public SeqVar_Object
	{
		DECLARE_PACKAGE_CLASS( SeqVar_Player, SeqVar_Object, Engine )

	public:

		Array<Object*> Players; //offset = 164, size = 12
		Array<Object*> PlayersPawns; //offset = 176, size = 12
		Bool bAllPlayers: 1; //offset = 188, size = 4
		Bool bReturnPawns: 1; //offset = 188, size = 4
		Int PlayerIdx; //offset = 192, size = 4

		Object* GetObjectValue(, PlayerController* PC );
	};

	class SeqVar_RandomFloat: public SeqVar_Float
	{
		DECLARE_PACKAGE_CLASS( SeqVar_RandomFloat, SeqVar_Float, Engine )

	public:

		Float Min; //offset = 164, size = 4
		Float Max; //offset = 168, size = 4
	};

	class SeqVar_RandomInt: public SeqVar_Int
	{
		DECLARE_PACKAGE_CLASS( SeqVar_RandomInt, SeqVar_Int, Engine )

	public:

		Int Min; //offset = 164, size = 4
		Int Max; //offset = 168, size = 4
	};

	class SeqVar_ScopedNamed: public SeqVar_Named
	{
		DECLARE_PACKAGE_CLASS( SeqVar_ScopedNamed, SeqVar_Named, Engine )

	public:
	};

	class SeqVar_String: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqVar_String, SequenceVariable, Engine )

	public:

		String StrValue; //offset = 160, size = 12
	};

	class SeqVar_Union: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqVar_Union, SequenceVariable, Engine )

	public:

		Array<Class*> SupportedVariableClasses; //offset = 160, size = 12
		Int IntValue; //offset = 172, size = 4
		Int BoolValue; //offset = 176, size = 4
		Float FloatValue; //offset = 180, size = 4
		String StringValue; //offset = 184, size = 12
		Object* ObjectValue; //offset = 196, size = 4
	};

	class SeqVar_Vector: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqVar_Vector, SequenceVariable, Engine )

	public:

		Vector VectValue; //offset = 160, size = 12
	};

	class AmbientSound: public Keypoint
	{
		DECLARE_PACKAGE_CLASS( AmbientSound, Keypoint, Engine )

	public:

		Bool bAutoPlay: 1; //offset = 508, size = 4
		Bool bIsPlaying: 1; //offset = 508, size = 4
		AudioComponent* AudioComponent; //offset = 512, size = 4
		Float m_fFadeInDuration; //offset = 516, size = 4
		Float m_fVolume; //offset = 520, size = 4
	};

	class AmbientSoundSimple: public AmbientSound
	{
		DECLARE_PACKAGE_CLASS( AmbientSoundSimple, AmbientSound, Engine )

	public:

		SoundNodeAmbient* AmbientProperties; //offset = 524, size = 4
		SoundCue* SoundCueInstance; //offset = 528, size = 4
		SoundNodeAmbient* SoundNodeInstance; //offset = 532, size = 4
	};

	class AmbientSoundNonLoop: public AmbientSoundSimple
	{
		DECLARE_PACKAGE_CLASS( AmbientSoundNonLoop, AmbientSoundSimple, Engine )

	public:
	};

	class DistributionFloatSoundParameter: public DistributionFloatParameterBase
	{
		DECLARE_PACKAGE_CLASS( DistributionFloatSoundParameter, DistributionFloatParameterBase, Engine )

	public:
	};

	class SoundNodeAmbient: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeAmbient, SoundNode, Engine )

	public:

		Byte DistanceModel; //offset = 100, size = 1
		RawDistributionFloat MinRadius; //offset = 104, size = 28
		RawDistributionFloat MaxRadius; //offset = 132, size = 28
		RawDistributionFloat LPFMinRadius; //offset = 160, size = 28
		RawDistributionFloat LPFMaxRadius; //offset = 188, size = 28
		Bool bSpatialize: 1; //offset = 216, size = 4
		Bool bAttenuate: 1; //offset = 216, size = 4
		Bool bAttenuateWithLowPassFilter: 1; //offset = 216, size = 4
		SoundNodeWave* Wave; //offset = 220, size = 4
		RawDistributionFloat VolumeModulation; //offset = 224, size = 28
		RawDistributionFloat PitchModulation; //offset = 252, size = 28
	};

	struct AmbientSoundSlot
	{
		SoundNodeWave* Wave; //offset = 0, size = 4
		Float PitchScale; //offset = 4, size = 4
		Float VolumeScale; //offset = 8, size = 4
		Float Weight; //offset = 12, size = 4
	};

	class SoundNodeAmbientNonLoop: public SoundNodeAmbient
	{
		DECLARE_PACKAGE_CLASS( SoundNodeAmbientNonLoop, SoundNodeAmbient, Engine )

	public:

		RawDistributionFloat DelayTime; //offset = 280, size = 28
		Array<AmbientSoundSlot> SoundSlots; //offset = 308, size = 12
	};

	enum SoundDistanceModel
	{
		ATTENUATION_Linear,
		ATTENUATION_Logarithmic,
		ATTENUATION_Inverse,
	};

	class SoundNodeAttenuation: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeAttenuation, SoundNode, Engine )

	public:

		Byte DistanceModel; //offset = 100, size = 1
		RawDistributionFloat MinRadius; //offset = 104, size = 28
		RawDistributionFloat MaxRadius; //offset = 132, size = 28
		Float dBAttenuationAtMax; //offset = 160, size = 4
		RawDistributionFloat LPFMinRadius; //offset = 164, size = 28
		RawDistributionFloat LPFMaxRadius; //offset = 192, size = 28
		Bool bSpatialize: 1; //offset = 220, size = 4
		Bool bAttenuate: 1; //offset = 220, size = 4
		Bool bAttenuateWithLowPassFilter: 1; //offset = 220, size = 4
	};

	class SoundNodeConcatenator: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeConcatenator, SoundNode, Engine )

	public:

		Array<Float> InputVolume; //offset = 100, size = 12
	};

	class SoundNodeDelay: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeDelay, SoundNode, Engine )

	public:

		RawDistributionFloat DelayDuration; //offset = 100, size = 28
	};

	struct DistanceDatum
	{
		RawDistributionFloat FadeInDistance; //offset = 0, size = 28
		RawDistributionFloat FadeOutDistance; //offset = 28, size = 28
		Float Volume; //offset = 56, size = 4
	};

	class SoundNodeDistanceCrossFade: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeDistanceCrossFade, SoundNode, Engine )

	public:

		Array<DistanceDatum> CrossFadeInput; //offset = 100, size = 12
	};

	class SoundNodeLooping: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeLooping, SoundNode, Engine )

	public:

		Bool bLoopIndefinitely: 1; //offset = 100, size = 4
		RawDistributionFloat LoopCount; //offset = 104, size = 28
	};

	class SoundNodeMature: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeMature, SoundNode, Engine )

	public:
	};

	class SoundNodeMixer: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeMixer, SoundNode, Engine )

	public:

		Array<Float> InputVolume; //offset = 100, size = 12
	};

	class SoundNodeModulator: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeModulator, SoundNode, Engine )

	public:

		RawDistributionFloat VolumeModulation; //offset = 100, size = 28
		RawDistributionFloat PitchModulation; //offset = 128, size = 28
	};

	class SoundNodeModulatorContinuous: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeModulatorContinuous, SoundNode, Engine )

	public:

		RawDistributionFloat VolumeModulation; //offset = 100, size = 28
		RawDistributionFloat PitchModulation; //offset = 128, size = 28
	};

	class SoundNodeOscillator: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeOscillator, SoundNode, Engine )

	public:

		RawDistributionFloat Amplitude; //offset = 100, size = 28
		RawDistributionFloat Frequency; //offset = 128, size = 28
		RawDistributionFloat Offset; //offset = 156, size = 28
		RawDistributionFloat Center; //offset = 184, size = 28
		Bool bModulatePitch: 1; //offset = 212, size = 4
		Bool bModulateVolume: 1; //offset = 212, size = 4
	};

	class SoundNodeRandom: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeRandom, SoundNode, Engine )

	public:

		Array<Float> Weights; //offset = 100, size = 12
		Bool bRandomizeWithoutReplacement: 1; //offset = 112, size = 4
		Array<Bool> HasBeenUsed; //offset = 116, size = 12
		Int NumRandomUsed; //offset = 128, size = 4
	};

	struct TerrainBVTree
	{
		Array<Int> Nodes; //offset = 0, size = 12
	};

	struct TerrainkDOPTree
	{
		Array<Int> Nodes; //offset = 0, size = 12
		Array<Int> Triangles; //offset = 12, size = 12
	};

	class TerrainComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( TerrainComponent, PrimitiveComponent, Engine )

	public:

		Array<ShadowMap2D*> ShadowMaps; //offset = 448, size = 12
		Array<Guid> IrrelevantLights; //offset = 460, size = 12
		Pointer TerrainObject; //offset = 472, size = 4
		Int SectionBaseX; //offset = 476, size = 4
		Int SectionBaseY; //offset = 480, size = 4
		Int SectionSizeX; //offset = 484, size = 4
		Int SectionSizeY; //offset = 488, size = 4
		Int TrueSectionSizeX; //offset = 492, size = 4
		Int TrueSectionSizeY; //offset = 496, size = 4
		Pointer LightMap; //offset = 500, size = 4
		Array<Int> PatchBounds; //offset = 504, size = 12
		Array<Int> PatchBatches; //offset = 516, size = 12
		Array<Int> BatchMaterials; //offset = 528, size = 12
		Int FullBatch; //offset = 540, size = 4
		Pointer PatchBatchOffsets; //offset = 544, size = 4
		Pointer WorkingOffsets; //offset = 548, size = 4
		Pointer PatchBatchTriangles; //offset = 552, size = 4
		Pointer PatchCachedTessellationValues; //offset = 556, size = 4
		Pointer TesselationLevels; //offset = 560, size = 4
		TerrainBVTree BVTree; //offset = 564, size = 12
		Array<Vector> CollisionVertices; //offset = 576, size = 12
		Pointer RBHeightfield; //offset = 588, size = 4
		Bool bDisplayCollisionLevel: 1; //offset = 592, size = 4
		Bool bPhysicsMeshDirty: 1; //offset = 592, size = 4
	};

	struct FilterLimit
	{
		Bool Enabled: 1; //offset = 0, size = 4
		Float Base; //offset = 4, size = 4
		Float NoiseScale; //offset = 8, size = 4
		Float NoiseAmount; //offset = 12, size = 4
	};

	struct TerrainFilteredMaterial
	{
		Bool UseNoise: 1; //offset = 0, size = 4
		Float NoiseScale; //offset = 4, size = 4
		Float NoisePercent; //offset = 8, size = 4
		FilterLimit MinHeight; //offset = 12, size = 16
		FilterLimit MaxHeight; //offset = 28, size = 16
		FilterLimit MinSlope; //offset = 44, size = 16
		FilterLimit MaxSlope; //offset = 60, size = 16
		Float Alpha; //offset = 76, size = 4
		TerrainMaterial* Material; //offset = 80, size = 4
	};

	class TerrainLayerSetup: public Object
	{
		DECLARE_PACKAGE_CLASS( TerrainLayerSetup, Object, Engine )

	public:

		Array<TerrainFilteredMaterial> Materials; //offset = 60, size = 12

		void PostBeginPlay();
		void SetMaterials( Array<TerrainFilteredMaterial> NewMaterials );
	};

	struct SelectedTerrainVertex
	{
		Int X; //offset = 0, size = 4
		Int Y; //offset = 4, size = 4
		Int Weight; //offset = 8, size = 4
	};

	struct CachedTerrainMaterialArray
	{
		Array<Pointer> CachedMaterials; //offset = 0, size = 12
	};

	struct TerrainMaterialResource
	{
	};

	struct TerrainDecoration
	{
		PrimitiveComponentFactory* Factory; //offset = 0, size = 4
		Float MinScale; //offset = 4, size = 4
		Float MaxScale; //offset = 8, size = 4
		Float Density; //offset = 12, size = 4
		Float SlopeRotationBlend; //offset = 16, size = 4
		Int RandSeed; //offset = 20, size = 4
		Bool bRandomlyRotateYaw: 1; //offset = 24, size = 4
		Array<TerrainDecorationInstance> Instances; //offset = 28, size = 12
	};

	struct TerrainDecoLayer
	{
		String Name; //offset = 0, size = 12
		Array<TerrainDecoration> Decorations; //offset = 12, size = 12
		Int AlphaMapIndex; //offset = 24, size = 4
	};

	struct TerrainDecorationInstance
	{
		PrimitiveComponent* Component; //offset = 0, size = 4
		Float X; //offset = 4, size = 4
		Float Y; //offset = 8, size = 4
		Float Scale; //offset = 12, size = 4
		Int Yaw; //offset = 16, size = 4
	};

	struct AlphaMap
	{
	};

	struct TerrainLayer
	{
		String Name; //offset = 0, size = 12
		TerrainLayerSetup* Setup; //offset = 12, size = 4
		Int AlphaMapIndex; //offset = 16, size = 4
		Bool Highlighted: 1; //offset = 20, size = 4
		Bool WireframeHighlighted: 1; //offset = 20, size = 4
		Bool Hidden: 1; //offset = 20, size = 4
		Color HighlightColor; //offset = 24, size = 4
		Color WireframeColor; //offset = 28, size = 4
		Int MinX; //offset = 32, size = 4
		Int MinY; //offset = 36, size = 4
		Int MaxX; //offset = 40, size = 4
		Int MaxY; //offset = 44, size = 4
	};

	struct TerrainWeightedMaterial
	{
	};

	struct TerrainInfoData
	{
	};

	struct TerrainHeight
	{
	};

	class Terrain: public Info
	{
		DECLARE_PACKAGE_CLASS( Terrain, Info, Engine )

	public:

		Array<TerrainHeight> Heights; //offset = 508, size = 12
		Array<TerrainInfoData> InfoData; //offset = 520, size = 12
		Array<TerrainLayer> Layers; //offset = 532, size = 12
		Int NormalMapLayer; //offset = 544, size = 4
		Array<TerrainDecoLayer> DecoLayers; //offset = 548, size = 12
		Array<AlphaMap> AlphaMaps; //offset = 560, size = 12
		Array<TerrainComponent*> TerrainComponents; //offset = 572, size = 12
		Int NumSectionsX; //offset = 584, size = 4
		Int NumSectionsY; //offset = 588, size = 4
		Int SectionSize; //offset = 592, size = 4
		Array<TerrainWeightedMaterial> WeightedMaterials; //offset = 596, size = 12
		Array<TerrainWeightMapTexture*> WeightedTextureMaps; //offset = 608, size = 12
		Array<Byte> CachedDisplacements; //offset = 620, size = 12
		Float MaxCollisionDisplacement; //offset = 632, size = 4
		Int MaxTesselationLevel; //offset = 636, size = 4
		Int MinTessellationLevel; //offset = 640, size = 4
		Float TesselationDistanceScale; //offset = 644, size = 4
		Int TessellationCheckCount; //offset = 648, size = 4
		Float TessellationCheckDistance; //offset = 652, size = 4
		Float TessellationCheckBorder; //offset = 656, size = 4
		Int CollisionTesselationLevel; //offset = 660, size = 4
		CachedTerrainMaterialArray CachedTerrainMaterials[2]; //offset = 664, size = 12
		Int NumVerticesX; //offset = 688, size = 4
		Int NumVerticesY; //offset = 692, size = 4
		Int NumPatchesX; //offset = 696, size = 4
		Int NumPatchesY; //offset = 700, size = 4
		Int MaxComponentSize; //offset = 704, size = 4
		Int StaticLightingResolution; //offset = 708, size = 4
		Bool bIsOverridingLightResolution: 1; //offset = 712, size = 4
		Bool bBilinearFilterLightmapGeneration: 1; //offset = 712, size = 4
		Bool bCastShadow: 1; //offset = 712, size = 4
		Bool bForceDirectLightMap: 1; //offset = 712, size = 4
		Bool bCastDynamicShadow: 1; //offset = 712, size = 4
		Bool bBlockRigidBody: 1; //offset = 712, size = 4
		Bool bAllowRigidBodyUnderneath: 1; //offset = 712, size = 4
		Bool bNoPhysCollision: 1; //offset = 712, size = 4
		Bool bAcceptsDynamicLights: 1; //offset = 712, size = 4
		Bool bMorphingEnabled: 1; //offset = 712, size = 4
		Bool bMorphingGradientsEnabled: 1; //offset = 712, size = 4
		Bool bLocked: 1; //offset = 712, size = 4
		Bool bHeightmapLocked: 1; //offset = 712, size = 4
		Bool bShowingCollision: 1; //offset = 712, size = 4
		Bool bShowWireframe: 1; //offset = 712, size = 4
		LightingChannelContainer LightingChannels; //offset = 716, size = 4
		Pointer ReleaseResourcesFence; //offset = 720, size = 4
		Int EditorTessellationLevel; //offset = 724, size = 4
		Array<SelectedTerrainVertex> SelectedVertices; //offset = 728, size = 12
		Color WireframeColor; //offset = 740, size = 4

		void PostBeginPlay( Int I );
		void CalcLayerBounds();
	};

	enum ETerrainMappingType
	{
		TMT_Auto,
		TMT_XY,
		TMT_XZ,
	};

	struct TerrainFoliageMesh
	{
		StaticMesh* StaticMesh; //offset = 0, size = 4
		MaterialInterface* Material; //offset = 4, size = 4
		Int Density; //offset = 8, size = 4
		Float MaxDrawRadius; //offset = 12, size = 4
		Float MinTransitionRadius; //offset = 16, size = 4
		Float MinScale; //offset = 20, size = 4
		Float MaxScale; //offset = 24, size = 4
		Int Seed; //offset = 28, size = 4
		Float SwayScale; //offset = 32, size = 4
		Float AlphaMapThreshold; //offset = 36, size = 4
		Float SlopeRotationBlend; //offset = 40, size = 4
	};

	class TerrainMaterial: public Object
	{
		DECLARE_PACKAGE_CLASS( TerrainMaterial, Object, Engine )

	public:

		Matrix LocalToMapping; //offset = 64, size = 64
		Byte MappingType; //offset = 128, size = 1
		Float MappingScale; //offset = 132, size = 4
		Float MappingRotation; //offset = 136, size = 4
		Float MappingPanU; //offset = 140, size = 4
		Float MappingPanV; //offset = 144, size = 4
		MaterialInterface* Material; //offset = 148, size = 4
		Texture2D* DisplacementMap; //offset = 152, size = 4
		Float DisplacementScale; //offset = 156, size = 4
		Array<TerrainFoliageMesh> FoliageMeshes; //offset = 160, size = 12
	};

	struct TerrainWeightedMaterial
	{
	};

	class TerrainWeightMapTexture: public Texture2D
	{
		DECLARE_PACKAGE_CLASS( TerrainWeightMapTexture, Texture2D, Engine )

	public:

		Terrain* ParentTerrain; //offset = 328, size = 4
		Array<Pointer> WeightedMaterials; //offset = 332, size = 12
	};

	const char* MAX_SUPPORTED_GAMEPADS = 4;
	const char* SCENE_DATASTORE_TAG = 'Scene;
	const char* DEFAULT_SIZE_Y = 76;
	const char* DEFAULT_SIZE_X = 102;
	const char* ASPECTRATIO_Widescreen = 1.777;
	const char* ASPECTRATIO_Monitor = 1.2;
	const char* ASPECTRATIO_Normal = 1.333;
	const char* PRIVATE_Protected = 0x3;
	const char* PRIVATE_KeepFocusedState = 0x8;
	const char* PRIVATE_PropagateState = 0x4;
	const char* PRIVATE_EditorNoReparent = 0x2;
	const char* PRIVATE_EditorNoRename = 0x1;
	const char* PRIVATE_EditorNoDelete = 0x0;
	const char* PRIVATE_TreeHiddenRecursive = 0x0;
	const char* PRIVATE_ManagedStyle = 0x0;
	const char* PRIVATE_NotRotatable = 0x0;
	const char* PRIVATE_NotDockable = 0x0;
	const char* PRIVATE_NotFocusable = 0x0;
	const char* PRIVATE_TreeHidden = 0x0;
	const char* PRIVATE_NotEditorSelectable = 0x0;
	const char* TEMP_SPLITSCREEN_INDEX = 0;

	enum ERotationAnchor
	{
		RA_Absolute,
		RA_Center,
		RA_PivotLeft,
		RA_PivotRight,
		RA_PivotTop,
		RA_PivotBottom,
	};

	enum EUIDataProviderFieldType
	{
		DATATYPE_Property,
		DATATYPE_Provider,
		DATATYPE_RangeProperty,
	};

	enum ESplitscreenRenderMode
	{
		SPLITRENDER_Fullscreen,
		SPLITRENDER_PlayerOwner,
	};

	enum EScreenInputMode
	{
		INPUTMODE_None,
		INPUTMODE_Locked,
		INPUTMODE_MatchingOnly,
		INPUTMODE_ActiveOnly,
	};

	enum ENavigationLinkType
	{
		NAVLINK_Automatic,
		NAVLINK_Manual,
	};

	enum EUIDefaultPenColor
	{
		UIPEN_White,
		UIPEN_Black,
	};

	enum EUIAspectRatioConstraint
	{
		UIASPECTRATIO_AdjustNone,
		UIASPECTRATIO_AdjustWidth,
	};

	enum EUIWidgetFace
	{
		UIFACE_Left,
		UIFACE_Top,
		UIFACE_Right,
	};

	enum EUIOrientation
	{
		UIORIENT_Horizontal,
		UIORIENT_Vertical,
	};

	enum EColumnHeaderState
	{
		COLUMNHEADER_Normal,
		COLUMNHEADER_PrimarySort,
	};

	enum EUIListElementState
	{
		ELEMENT_Normal,
		ELEMENT_Active,
		ELEMENT_Selected,
	};

	enum EUIAlignment
	{
		UIALIGN_Left,
		UIALIGN_Center,
		UIALIGN_Right,
	};

	enum ETextAutoScaleMode
	{
		UIAUTOSCALE_None,
		UIAUTOSCALE_Normal,
		UIAUTOSCALE_Justified,
	};

	enum ETextClipMode
	{
		CLIP_None,
		CLIP_Normal,
		CLIP_Ellipsis,
	};

	enum EUIAutoSizeConstraintType
	{
		UIAUTOSIZEREGION_Minimum,
		UIAUTOSIZEREGION_Maximum,
	};

	enum EUIDockPaddingEvalType
	{
		UIPADDINGEVAL_Pixels,
		UIPADDINGEVAL_PercentTarget,
		UIPADDINGEVAL_PercentOwner,
	};

	enum EUIExtentEvalType
	{
		UIEXTENTEVAL_Pixels,
		UIEXTENTEVAL_PercentSelf,
		UIEXTENTEVAL_PercentOwner,
	};

	enum EPositionEvalType
	{
		EVALPOS_None,
		EVALPOS_PixelViewport,
		EVALPOS_PixelScene,
		EVALPOS_PixelOwner,
	};

	enum EMaterialAdjustmentType
	{
		ADJUST_None,
		ADJUST_Normal,
		ADJUST_Justified,
	};

	struct RawInputKeyEventData
	{
		Name InputKeyName; //offset = 0, size = 8
		Byte ModifierKeyFlags; //offset = 8, size = 1
	};

	struct UIInputActionAlias
	{
		Name InputAliasName; //offset = 0, size = 8
		Array<RawInputKeyEventData> LinkedInputKeys; //offset = 8, size = 12
	};

	struct UIInputAliasStateMap
	{
		String StateClassName; //offset = 0, size = 12
		Class* State; //offset = 12, size = 4
		Array<UIInputActionAlias> StateInputAliases; //offset = 16, size = 12
	};

	struct UIInputAliasClassMap
	{
		String WidgetClassName; //offset = 0, size = 12
		Class* WidgetClass; //offset = 12, size = 4
		Array<UIInputAliasStateMap> WidgetStates; //offset = 16, size = 12
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> StateLookupTable; //offset = 28, size = 20
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> StateReverseLookupTable; //offset = 48, size = 20
	};

	struct UIInputAliasMap
	{
		MultiMap_Mirror InputAliasLookupTable; //offset = 0, size = 20
	};

	struct UIInputAliasValue
	{
		Byte ModifierFlagMask; //offset = 0, size = 1
		Name InputAliasName; //offset = 4, size = 8
	};

	struct UIAxisEmulationDefinition
	{
		Name AxisInputKey; //offset = 0, size = 8
		Name AdjacentAxisInputKey; //offset = 8, size = 8
		Bool bEmulateButtonPress: 1; //offset = 16, size = 4
		Name InputKeyToEmulate[2]; //offset = 20, size = 8
	};

	struct SubscribedInputEventParameters
	{
		Name InputAliasName; //offset = 32, size = 8
	};

	struct InputEventParameters
	{
		Int PlayerIndex; //offset = 0, size = 4
		Int ControllerId; //offset = 4, size = 4
		Name InputKeyName; //offset = 8, size = 8
		Byte EventType; //offset = 16, size = 1
		Float InputDelta; //offset = 20, size = 4
		Float DeltaTime; //offset = 24, size = 4
		Bool bAltPressed: 1; //offset = 28, size = 4
		Bool bCtrlPressed: 1; //offset = 28, size = 4
		Bool bShiftPressed: 1; //offset = 28, size = 4
	};

	struct UIMouseCursor
	{
		Name CursorStyle; //offset = 0, size = 8
		UITexture* Cursor; //offset = 8, size = 4
	};

	struct WrappedStringElement
	{
		String Value; //offset = 0, size = 12
		Vector2D LineExtent; //offset = 12, size = 8
	};

	struct UIStringNode_FormattedNodeParent
	{
	};

	struct UIStringNode_NestedMarkupParent
	{
	};

	struct UIStringNode_Image
	{
		Vector2D ForcedExtent; //offset = 44, size = 8
		TextureCoordinates TexCoords; //offset = 52, size = 16
		UITexture* RenderedImage; //offset = 68, size = 4
	};

	struct UIStringNode_Text
	{
		String RenderedText; //offset = 44, size = 12
		UICombinedStyleData NodeStyleParameters; //offset = 56, size = 140
	};

	struct UIStringNode
	{
		Pointer VfTable; //offset = 0, size = 4
		UIDataStore* NodeDataStore; //offset = 4, size = 4
		Pointer ParentNode; //offset = 8, size = 4
		String SourceText; //offset = 12, size = 12
		Vector2D Extent; //offset = 24, size = 8
		Vector2D Scaling; //offset = 32, size = 8
		Bool bForceWrap: 1; //offset = 40, size = 4
	};

	struct UICombinedStyleData
	{
		LinearColor TextColor; //offset = 0, size = 16
		LinearColor ImageColor; //offset = 16, size = 16
		Float TextPadding[2]; //offset = 32, size = 4
		Float ImagePadding[2]; //offset = 40, size = 4
		Font* DrawFont; //offset = 48, size = 4
		Surface* FallbackImage; //offset = 52, size = 4
		TextureCoordinates AtlasCoords; //offset = 56, size = 16
		UITextAttributes TextAttributes; //offset = 72, size = 4
		Byte TextAlignment[2]; //offset = 76, size = 1
		Byte TextClipMode; //offset = 78, size = 1
		Byte TextClipAlignment; //offset = 79, size = 1
		UIImageAdjustmentData AdjustmentType[2]; //offset = 80, size = 16
		TextAutoScaleValue TextAutoScaling; //offset = 112, size = 8
		Vector2D TextScale; //offset = 120, size = 8
		Vector2D TextSpacingAdjust; //offset = 128, size = 8
		Bool bInitialized: 1; //offset = 136, size = 4
	};

	struct UIStringNodeModifier
	{
		UICombinedStyleData CustomStyleData; //offset = 0, size = 140
		UICombinedStyleData BaseStyleData; //offset = 140, size = 140
		Array<ModifierData> ModifierStack; //offset = 280, size = 12
		UIState* CurrentMenuState; //offset = 292, size = 4

		/*
		ModifierData
		*/
	};

	struct UIImageStyleOverride
	{
		TextureCoordinates Coordinates; //offset = 32, size = 16
		UIImageAdjustmentData Formatting[2]; //offset = 48, size = 16
		Bool bOverrideCoordinates: 1; //offset = 80, size = 4
		Bool bOverrideFormatting: 1; //offset = 80, size = 4
	};

	struct UITextStyleOverride
	{
		Font* DrawFont; //offset = 32, size = 4
		UITextAttributes TextAttributes; //offset = 36, size = 4
		Byte TextAlignment[2]; //offset = 40, size = 1
		Byte ClipMode; //offset = 42, size = 1
		Byte ClipAlignment; //offset = 43, size = 1
		TextAutoScaleValue AutoScaling; //offset = 44, size = 8
		Float DrawScale[2]; //offset = 52, size = 4
		Float SpacingAdjust[2]; //offset = 60, size = 4
		Bool bOverrideDrawFont: 1; //offset = 68, size = 4
		Bool bOverrideAttributes: 1; //offset = 68, size = 4
		Bool bOverrideAlignment: 1; //offset = 68, size = 4
		Bool bOverrideClipMode: 1; //offset = 68, size = 4
		Bool bOverrideClipAlignment: 1; //offset = 68, size = 4
		Bool bOverrideAutoScale: 1; //offset = 68, size = 4
		Bool bOverrideScale: 1; //offset = 68, size = 4
		Bool bOverrideSpacingAdjust: 1; //offset = 68, size = 4
	};

	struct UIStyleOverride
	{
		LinearColor DrawColor; //offset = 0, size = 16
		Float Opacity; //offset = 16, size = 4
		Float Padding[2]; //offset = 20, size = 4
		Bool bOverrideDrawColor: 1; //offset = 28, size = 4
		Bool bOverrideOpacity: 1; //offset = 28, size = 4
		Bool bOverridePadding: 1; //offset = 28, size = 4
	};

	struct TextAutoScaleValue
	{
		Float MinScale; //offset = 0, size = 4
		Byte AutoScaleMode; //offset = 4, size = 1
	};

	struct RenderParameters
	{
		Float DrawX; //offset = 0, size = 4
		Float DrawY; //offset = 4, size = 4
		Float DrawXL; //offset = 8, size = 4
		Float DrawYL; //offset = 12, size = 4
		Vector2D Scaling; //offset = 16, size = 8
		Font* DrawFont; //offset = 24, size = 4
		Byte TextAlignment[2]; //offset = 28, size = 1
		Vector2D ImageExtent; //offset = 32, size = 8
		TextureCoordinates DrawCoords; //offset = 40, size = 16
		Vector2D SpacingAdjust; //offset = 56, size = 8
		Float ViewportHeight; //offset = 64, size = 4
	};

	struct UIStringCaretParameters
	{
		Bool bDisplayCaret: 1; //offset = 0, size = 4
		Byte CaretType; //offset = 4, size = 1
		Float CaretWidth; //offset = 8, size = 4
		Name CaretStyle; //offset = 12, size = 8
		Int CaretPosition; //offset = 20, size = 4
		MaterialInterface* CaretMaterial; //offset = 24, size = 4
	};

	struct TextureCoordinates
	{
		Float U; //offset = 0, size = 4
		Float V; //offset = 4, size = 4
		Float UL; //offset = 8, size = 4
		Float VL; //offset = 12, size = 4
	};

	struct UIImageAdjustmentData
	{
		ScreenPositionRange ProtectedRegion; //offset = 0, size = 12
		Byte AdjustmentType; //offset = 12, size = 1
		Byte Alignment; //offset = 13, size = 1
	};

	struct UITextAttributes
	{
		Bool Bold: 1; //offset = 0, size = 4
		Bool Italic: 1; //offset = 0, size = 4
		Bool Underline: 1; //offset = 0, size = 4
		Bool Shadow: 1; //offset = 0, size = 4
		Bool Strikethrough: 1; //offset = 0, size = 4
	};

	struct StyleReferenceId
	{
		Name StyleReferenceTag; //offset = 0, size = 8
		Property* StyleProperty; //offset = 8, size = 4
	};

	struct UIStyleSubscriberReference
	{
		Name SubscriberId; //offset = 0, size = 8
		Subscriber Subscriber; //offset = 8, size = 8
	};

	struct UIDataStoreBinding
	{
		Subscriber Subscriber; //offset = 0, size = 8
		Byte RequiredFieldType; //offset = 8, size = 1
		String MarkupString; //offset = 12, size = 12
		Int BindingIndex; //offset = 24, size = 4
		Name DataStoreName; //offset = 28, size = 8
		Name DataStoreField; //offset = 36, size = 8
		UIDataStore* ResolvedDataStore; //offset = 44, size = 4
	};

	struct UIRotation
	{
		Rotator Rotation; //offset = 0, size = 12
		Matrix TransformMatrix; //offset = 16, size = 64
		UIAnchorPosition AnchorPosition; //offset = 80, size = 16
		Byte AnchorType; //offset = 96, size = 1
	};

	struct UIDockingNode
	{
		UIObject* Widget; //offset = 0, size = 4
		Byte Face; //offset = 4, size = 1
	};

	struct UIDockingSet
	{
		UIObject* OwnerWidget; //offset = 0, size = 4
		UIObject* TargetWidget[4]; //offset = 4, size = 4
		UIScreenValue_DockPadding DockPadding; //offset = 20, size = 20
		Bool bLockWidthWhenDocked: 1; //offset = 40, size = 4
		Bool bLockHeightWhenDocked: 1; //offset = 40, size = 4
		Byte TargetFace[4]; //offset = 44, size = 1
		Byte bResolved[4]; //offset = 48, size = 1
		Byte bLinking[4]; //offset = 52, size = 1
	};

	struct UINavigationData
	{
		UIObject* NavigationTarget[4]; //offset = 0, size = 4
		UIObject* ForcedNavigationTarget[4]; //offset = 16, size = 4
		Byte bNullOverride[4]; //offset = 32, size = 1
	};

	struct UIFocusPropagationData
	{
		UIObject* FirstFocusTarget; //offset = 0, size = 4
		UIObject* LastFocusTarget; //offset = 4, size = 4
		UIObject* NextFocusTarget; //offset = 8, size = 4
		UIObject* PrevFocusTarget; //offset = 12, size = 4
		Bool bPendingReceiveFocus: 1; //offset = 16, size = 4
	};

	struct PlayerInteractionData
	{
		UIObject* FocusedControl; //offset = 0, size = 4
		UIObject* LastFocusedControl; //offset = 4, size = 4
	};

	struct StateInputKeyAction
	{
		Class* Scope; //offset = 24, size = 4
	};

	struct InputKeyAction
	{
		Name InputKeyName; //offset = 0, size = 8
		Byte InputKeyState; //offset = 8, size = 1
		Array<SequenceAction*> ActionsToExecute; //offset = 12, size = 12
	};

	struct DefaultEventSpecification
	{
		UIEvent* EventTemplate; //offset = 0, size = 4
		Class* EventState; //offset = 4, size = 4
	};

	struct InputEventSubscription
	{
		Name KeyName; //offset = 0, size = 8
		Array<UIScreenObject*> Subscribers; //offset = 8, size = 12
	};

	struct UIRenderingSubregion
	{
		UIScreenValue_Extent ClampRegionSize; //offset = 0, size = 8
		UIScreenValue_Extent ClampRegionOffset; //offset = 8, size = 8
		Byte ClampRegionAlignment; //offset = 16, size = 1
		Bool bSubregionEnabled: 1; //offset = 20, size = 4
	};

	struct AutoSizePadding
	{
	};

	struct UIScreenValue_AutoSizeRegion
	{
		Float Value[2]; //offset = 0, size = 4
		Byte EvalType[2]; //offset = 8, size = 1
	};

	struct AutoSizeData
	{
		UIScreenValue_AutoSizeRegion Extent; //offset = 0, size = 12
		AutoSizePadding Padding; //offset = 12, size = 12
		Bool bAutoSizeEnabled: 1; //offset = 24, size = 4
	};

	struct UIScreenValue_DockPadding
	{
		Float PaddingValue[4]; //offset = 0, size = 4
		Byte PaddingScaleType[4]; //offset = 16, size = 1
	};

	struct ScreenPositionRange
	{
	};

	struct UIAnchorPosition
	{
		Float ZDepth; //offset = 12, size = 4
	};

	struct UIScreenValue_Bounds
	{
		Float Value[4]; //offset = 0, size = 4
		Byte ScaleType[4]; //offset = 16, size = 1
		Byte bInvalidated[4]; //offset = 20, size = 1
		Byte AspectRatioMode; //offset = 24, size = 1
	};

	struct UIScreenValue_Position
	{
		Float Value[2]; //offset = 0, size = 4
		Byte ScaleType[2]; //offset = 8, size = 1
	};

	struct UIScreenValue_Extent
	{
		Float Value; //offset = 0, size = 4
		Byte ScaleType; //offset = 4, size = 1
		Byte Orientation; //offset = 5, size = 1
	};

	struct UIScreenValue
	{
		Float Value; //offset = 0, size = 4
		Byte ScaleType; //offset = 4, size = 1
		Byte Orientation; //offset = 5, size = 1
	};

	struct UIStyleReference
	{
		Name DefaultStyleTag; //offset = 0, size = 8
		Class* RequiredStyleClass; //offset = 8, size = 4
		STYLE_ID AssignedStyleID; //offset = 12, size = 16
		UIStyle* ResolvedStyle; //offset = 28, size = 4
	};

	struct UIProviderFieldValue
	{
		Pointer CustomStringNode; //offset = 60, size = 4
	};

	struct UIRangeData
	{
		Float CurrentValue; //offset = 0, size = 4
		Float MinValue; //offset = 4, size = 4
		Float MaxValue; //offset = 8, size = 4
		Float NudgeValue; //offset = 12, size = 4
		Bool bIntRange: 1; //offset = 16, size = 4
	};

	struct UIProviderScriptFieldValue
	{
		Name PropertyTag; //offset = 0, size = 8
		Byte PropertyType; //offset = 8, size = 1
		String StringValue; //offset = 12, size = 12
		Surface* ImageValue; //offset = 24, size = 4
		Array<Int> ArrayValue; //offset = 28, size = 12
		UIRangeData RangeValue; //offset = 40, size = 20
	};

	struct STYLE_ID
	{
	};

	struct WIDGET_ID
	{
	};

	class UIRoot: public Object
	{
		DECLARE_PACKAGE_CLASS( UIRoot, Object, Engine )

	public:

		String ConvertWidgetIDToString( UIObject* SourceWidget, String Result );
		Bool GetDataStoreStringValue( String InDataStoreMarkup, String OutStringValue, UIScene* OwnerScene, LocalPlayer* OwnerPlayer, UIProviderFieldValue FieldValue, Bool Result );
		Bool GetDataStoreFieldValue( String InDataStoreMarkup, UIProviderFieldValue OutFieldValue, UIScene* OwnerScene, LocalPlayer* OwnerPlayer );
		Bool SetDataStoreStringValue( String InDataStoreMarkup, String InStringValue, UIScene* OwnerScene, LocalPlayer* OwnerPlayer, UIProviderFieldValue FieldValue );
		Bool SetDataStoreFieldValue( String InDataStoreMarkup, UIProviderFieldValue InFieldValue, UIScene* OwnerScene, LocalPlayer* OwnerPlayer );
		Matrix GetPrimitiveTransform( UIObject* Widget, Bool bIncludeAnchorPosition, Bool bIncudeRotation, Bool bIncludeScale );
		void SetMouseCaptureOverride( Bool bCaptureMouse );
		Bool GetCursorSize( Float CursorXL, Float CursorYL );
		Bool GetCursorPosition( Int CursorX, Int CursorY, UIScene* Scene );
		Byte GetFaceOrientation( Byte Face );
		GameUISceneClient* GetSceneClient();
		UIInteraction* GetCurrentUIController();
		Bool IsConsole( Byte ConsoleType );
	};

	class Interaction: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( Interaction, UIRoot, Engine )

	public:

		__OnReceivedNativeInputKey__Delegate __OnReceivedNativeInputKey__Delegate; //offset = 60, size = 12
		__OnReceivedNativeInputAxis__Delegate __OnReceivedNativeInputAxis__Delegate; //offset = 72, size = 12
		__OnReceivedNativeInputChar__Delegate __OnReceivedNativeInputChar__Delegate; //offset = 84, size = 12
		__OnInitialize__Delegate __OnInitialize__Delegate; //offset = 96, size = 12

		void NotifyPlayerRemoved( Int PlayerIndex, LocalPlayer* RemovedPlayer );
		void NotifyPlayerAdded( Int PlayerIndex, LocalPlayer* AddedPlayer );
		void NotifyGameSessionEnded();
		void Initialized();
		void OnInitialize();
		void Init();
		void Tick( Float DeltaTime );
		Bool OnReceivedNativeInputChar( Int ControllerId, String Unicode );
		Bool OnReceivedNativeInputAxis( Int ControllerId, Name Key, Float Delta, Float DeltaTime, Bool bGamepad );
		Bool OnReceivedNativeInputKey( Int ControllerId, Name Key, Byte EventType, Float AmountDepressed, Bool bGamepad );
	};

	const char* MaxHistory = 16;


	class Console: public Interaction
	{
		DECLARE_PACKAGE_CLASS( Console, Interaction, Engine )

	public:
		struct Open
		{
			/*
			EndState
			BeginState
			PostRender_Console
			InputKey
			InputChar
			*/
		};

		struct Typing
		{
			/*
			EndState
			BeginState
			PostRender_Console
			InputKey
			InputChar
			*/
		};

		LocalPlayer* ConsoleTargetPlayer; //offset = 108, size = 4
		UIScene* LargeConsoleScene; //offset = 112, size = 4
		UIScene* MiniConsoleScene; //offset = 116, size = 4
		UILabel* ConsoleBufferText; //offset = 120, size = 4
		ConsoleEntry* MiniConsoleInput; //offset = 124, size = 4
		ConsoleEntry* LargeConsoleInput; //offset = 128, size = 4
		Texture2D* DefaultTexture_Black; //offset = 132, size = 4
		Texture2D* DefaultTexture_White; //offset = 136, size = 4
		Name ConsoleKey; //offset = 140, size = 8
		Name TypeKey; //offset = 148, size = 8
		Int MaxScrollbackSize; //offset = 156, size = 4
		Array<String> Scrollback; //offset = 160, size = 12
		Int SBHead; //offset = 172, size = 4
		Int SBPos; //offset = 176, size = 4
		Int HistoryTop; //offset = 180, size = 4
		Int HistoryBot; //offset = 184, size = 4
		Int HistoryCur; //offset = 188, size = 4
		String History[16]; //offset = 192, size = 12
		String TypedStr; //offset = 384, size = 12
		Int TypedStrPos; //offset = 396, size = 4
		Bool bCaptureKeyInput: 1; //offset = 400, size = 4
		Bool bCtrl: 1; //offset = 400, size = 4
		Bool bEnableUI: 1; //offset = 400, size = 4

		void FlushPlayerInput( PlayerController* PC );
		Bool IsUIMiniConsoleOpen();
		Bool IsUIConsoleOpen();
		Bool InputChar( Int ControllerId, String Unicode );
		Bool InputKey( Int ControllerId, Name Key, Byte Event, Float AmountDepressed, Bool bGamepad );
		void PostRender_Console( Canvas* Canvas );
		void StartTyping( String Text );
		void OutputText( String Text, String RemainingText, Int StringLength, Int LineLength );
		void OutputTextLine( String Text );
		void ClearOutput();
		void ConsoleCommand( String Command );
		void PurgeCommandFromHistory( String Command, Int HistoryIdx, Int idx, Int NextIdx );
		void SetCursorPos( Int Position );
		void SetInputText( String Text );
		void Initialized();
	};

	struct PlayerDataStoreGroup
	{
		LocalPlayer* PlayerOwner; //offset = 0, size = 4
		Array<UIDataStore*> DataStores; //offset = 4, size = 12
	};

	class DataStoreClient: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( DataStoreClient, UIRoot, Engine )

	public:

		Array<String> GlobalDataStoreClasses; //offset = 60, size = 12
		Array<UIDataStore*> GlobalDataStores; //offset = 72, size = 12
		Array<String> PlayerDataStoreClassNames; //offset = 84, size = 12
		Array<Class*> PlayerDataStoreClasses; //offset = 96, size = 12
		Array<PlayerDataStoreGroup> PlayerDataStores; //offset = 108, size = 12

		void DebugDumpDataStoreInfo( Bool bVerbose );
		void NotifyGameSessionEnded( Int I, Int DataStoreIndex, Array<UIDataStore*> DataStoreArray );
		Class* FindDataStoreClass( Class* RequiredMetaClass, Int I, Class* Result );
		void GetPlayerDataStoreClasses( Array<Class*> out_DataStoreClasses );
		Int FindPlayerDataStoreIndex( LocalPlayer* PlayerOwner );
		void GetAvailableDataStores( UIScene* CurrentScene, Array<UIDataStore*> out_DataStores );
		Bool UnregisterDataStore( UIDataStore* DataStore );
		Bool RegisterDataStore( UIDataStore* DataStore, LocalPlayer* PlayerOwner );
		UIDataStore* CreateDataStore( Class* DataStoreClass );
		UIDataStore* FindDataStore( Name DataStoreTag, LocalPlayer* PlayerOwner );
	};

	struct KeyBind
	{
		Name Name; //offset = 0, size = 8
		String Command; //offset = 8, size = 12
		Bool Control: 1; //offset = 20, size = 4
		Bool Shift: 1; //offset = 20, size = 4
		Bool Alt: 1; //offset = 20, size = 4
	};

	class Input: public Interaction
	{
		DECLARE_PACKAGE_CLASS( Input, Interaction, Engine )

	public:

		Array<KeyBind> Bindings; //offset = 108, size = 12
		Array<Name> PressedKeys; //offset = 120, size = 12
		Byte CurrentEvent; //offset = 132, size = 1
		Float CurrentDelta; //offset = 136, size = 4
		Float CurrentDeltaTime; //offset = 140, size = 4
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> NameToPtr; //offset = 144, size = 20
		Array<Pointer> AxisArray; //offset = 164, size = 12
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> KeyToModifiers; //offset = 176, size = 20

		void SetBind( Name BindName, String Command, KeyBind NewBind, Int BindIndex );
		String GetBind( Name Key, Bool Control, Bool Shift, Bool Alt );
		void ResetInput();
	};

	class PlayerInput: public Input
	{
		DECLARE_PACKAGE_CLASS( PlayerInput, Input, Engine )

	public:

		Bool bUsingGamepad: 1; //offset = 196, size = 4
		Bool bInvertMouse: 1; //offset = 196, size = 4
		Bool bInvertTurn: 1; //offset = 196, size = 4
		Bool bWasForward: 1; //offset = 196, size = 4
		Bool bWasBack: 1; //offset = 196, size = 4
		Bool bWasLeft: 1; //offset = 196, size = 4
		Bool bWasRight: 1; //offset = 196, size = 4
		Bool bEdgeForward: 1; //offset = 196, size = 4
		Bool bEdgeBack: 1; //offset = 196, size = 4
		Bool bEdgeLeft: 1; //offset = 196, size = 4
		Bool bEdgeRight: 1; //offset = 196, size = 4
		Bool bEnableMouseSmoothing: 1; //offset = 196, size = 4
		Bool bEnableFOVScaling: 1; //offset = 196, size = 4
		Name LastAxisKeyName; //offset = 200, size = 8
		Float DoubleClickTimer; //offset = 208, size = 4
		Float DoubleClickTime; //offset = 212, size = 4
		Float MouseSensitivity; //offset = 216, size = 4
		Float aBaseX; //offset = 220, size = 4
		Float aBaseY; //offset = 224, size = 4
		Float aBaseZ; //offset = 228, size = 4
		Float aMouseX; //offset = 232, size = 4
		Float aMouseY; //offset = 236, size = 4
		Float aForward; //offset = 240, size = 4
		Float aTurn; //offset = 244, size = 4
		Float aStrafe; //offset = 248, size = 4
		Float aUp; //offset = 252, size = 4
		Float aLookUp; //offset = 256, size = 4
		Float aPS3AccelX; //offset = 260, size = 4
		Float aPS3AccelY; //offset = 264, size = 4
		Float aPS3AccelZ; //offset = 268, size = 4
		Float aPS3Gyro; //offset = 272, size = 4
		Float RawJoyUp; //offset = 276, size = 4
		Float RawJoyRight; //offset = 280, size = 4
		Float RawJoyLookRight; //offset = 284, size = 4
		Float RawJoyLookUp; //offset = 288, size = 4
		Float MoveForwardSpeed; //offset = 292, size = 4
		Float MoveStrafeSpeed; //offset = 296, size = 4
		Float LookRightScale; //offset = 300, size = 4
		Float LookUpScale; //offset = 304, size = 4
		Byte bStrafe; //offset = 308, size = 1
		Byte bXAxis; //offset = 309, size = 1
		Byte bYAxis; //offset = 310, size = 1
		Float ZeroTime[2]; //offset = 312, size = 4
		Float SmoothedMouse[2]; //offset = 320, size = 4
		Int MouseSamples; //offset = 328, size = 4
		Float MouseSamplingTotal; //offset = 332, size = 4

		Float SmoothMouse( Float aMouse, Float DeltaTime, Byte SampleCount, Int Index, Float MouseSamplingTime );
		void ClearSmoothing( Int I );
		void SmartJump();
		void Jump();
		void ProcessInputMatching( Float DeltaTime, Float Value, Int I, Int MatchIdx, Bool bMatch );
		Byte CheckForDoubleClickMove( Float DeltaTime, Byte DoubleClickMove, Byte OldDoubleClick );
		void CatchDoubleClickInput();
		void PlayerInput( Float DeltaTime, Float FOVScale, Float TimeScale );
		void AdjustMouseSensitivity( Float FOVScale );
		void PostProcessInput( Float DeltaTime );
		void PreProcessInput( Float DeltaTime );
		void DrawHUD( HUD* H );
		void SetSensitivity( Float F );
		Bool InvertTurn();
		Bool InvertMouse();
	};

	class PlayerManagerInteraction: public Interaction
	{
		DECLARE_PACKAGE_CLASS( PlayerManagerInteraction, Interaction, Engine )

	public:
	};

	enum EUIAnimNotifyType
	{
		EANT_WidgetFunction,
		EANT_SceneFunction,
		EANT_KismetEvent,
	};

	enum EUIAnimType
	{
		EAT_None,
		EAT_Position,
		EAT_RelPosition,
		EAT_Rotation,
		EAT_RelRotation,
		EAT_Color,
		EAT_Opacity,
	};

	struct UIAnimSeqRef
	{
		UIAnimationSeq* SeqRef; //offset = 0, size = 4
		Float PlaybackRate; //offset = 4, size = 4
		Float AnimTime; //offset = 8, size = 4
		Bool bIsPlaying: 1; //offset = 12, size = 4
		Bool bIsLooping: 1; //offset = 12, size = 4
		Int LoopCount; //offset = 16, size = 4
		Vector InitialRenderOffset; //offset = 20, size = 12
		Rotator InitialRotation; //offset = 32, size = 12
	};

	struct UIAnimationKeyFrame
	{
		Float TimeMark; //offset = 0, size = 4
		UIAnimationRawData Data; //offset = 4, size = 56
	};

	struct UIAnimTrack
	{
		Byte TrackType; //offset = 0, size = 1
		Name TrackWidgetTag; //offset = 4, size = 8
		Array<UIAnimationKeyFrame> KeyFrames; //offset = 12, size = 12
		UIObject* TargetWidget; //offset = 24, size = 4
	};

	struct UIAnimationNotify
	{
		Byte NotifyType; //offset = 0, size = 1
		Name NotifyName; //offset = 4, size = 8
	};

	struct UIAnimationRawData
	{
		Float DestAsFloat; //offset = 0, size = 4
		LinearColor DestAsColor; //offset = 4, size = 16
		Rotator DestAsRotator; //offset = 20, size = 12
		Vector DestAsVector; //offset = 32, size = 12
		UIAnimationNotify DestAsNotify; //offset = 44, size = 12
	};

	class UIAnimation: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( UIAnimation, UIRoot, Engine )

	public:
	};

	class UIAction_SetControllerId: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_SetControllerId, UIAction, Engine )

	public:
	};

	class UIScreenObject: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( UIScreenObject, UIRoot, Engine )

	public:

		UIScreenValue_Bounds Position; //offset = 60, size = 28
		Float ZDepth; //offset = 88, size = 4
		Bool bHidden: 1; //offset = 92, size = 4
		Bool bNeverFocus: 1; //offset = 92, size = 4
		Bool bSupports3DPrimitives: 1; //offset = 92, size = 4
		Bool bInitialized: 1; //offset = 92, size = 4
		Array<UIObject*> Children; //offset = 96, size = 12
		Array<Class*> DefaultStates; //offset = 108, size = 12
		Class* InitialState; //offset = 120, size = 4
		Array<UIState*> InactiveStates; //offset = 124, size = 12
		Array<UIState*> StateStack; //offset = 136, size = 12
		Array<PlayerInteractionData> FocusControls; //offset = 148, size = 12
		Array<UIFocusPropagationData> FocusPropagation; //offset = 160, size = 12
		Byte PlayerInputMask; //offset = 172, size = 1
		Float Opacity; //offset = 176, size = 4
		UIComp_Event* EventProvider; //offset = 180, size = 4
		Name FocusedCue; //offset = 184, size = 8
		Name MouseEnterCue; //offset = 192, size = 8
		Name NavigateUpCue; //offset = 200, size = 8
		Name NavigateDownCue; //offset = 208, size = 8
		Name NavigateLeftCue; //offset = 216, size = 8
		Name NavigateRightCue; //offset = 224, size = 8
		__NotifyActiveSkinChanged__Delegate __NotifyActiveSkinChanged__Delegate; //offset = 232, size = 12
		__OnRawInputKey__Delegate __OnRawInputKey__Delegate; //offset = 244, size = 12
		__OnRawInputAxis__Delegate __OnRawInputAxis__Delegate; //offset = 256, size = 12
		__OnProcessInputKey__Delegate __OnProcessInputKey__Delegate; //offset = 268, size = 12
		__OnProcessInputAxis__Delegate __OnProcessInputAxis__Delegate; //offset = 280, size = 12
		__NotifyPositionChanged__Delegate __NotifyPositionChanged__Delegate; //offset = 292, size = 12
		__NotifyResolutionChanged__Delegate __NotifyResolutionChanged__Delegate; //offset = 304, size = 12
		__NotifyActiveStateChanged__Delegate __NotifyActiveStateChanged__Delegate; //offset = 316, size = 12
		__NotifyVisibilityChanged__Delegate __NotifyVisibilityChanged__Delegate; //offset = 328, size = 12
		__OnPreRenderCallBack__Delegate __OnPreRenderCallBack__Delegate; //offset = 340, size = 12

		void LogCurrentState( Int Indent );
		void OnSetControllerId( UIAction_SetControllerId* Action, LocalPlayer* PlayerOwner );
		void OnShowMembershipMarketplaceUI( UIAction_ShowMembershipMarketplaceUI* Action, OnlineSubsystem* OnlineSub );
		void OnShowContentMarketplaceUI( UIAction_ShowContentMarketplaceUI* Action, OnlineSubsystem* OnlineSub );
		void OnShowGamerCardUI( UIAction_ShowGamerCardUI* Action, OnlineSubsystem* OnlineSub, UniqueNetId Player );
		void OnShowFeedbackUI( UIAction_ShowFeedbackUI* Action, OnlineSubsystem* OnlineSub, UniqueNetId Player );
		void OnShowMessagesUI( UIAction_ShowMessagesUI* Action, OnlineSubsystem* OnlineSub );
		void OnShowFriendInviteUI( UIAction_ShowFriendInviteUI* Action, OnlineSubsystem* OnlineSub, UniqueNetId Friend );
		void OnShowAchievementsUI( UIAction_ShowAchievementsUI* Action, OnlineSubsystem* OnlineSub );
		void OnShowPlayersUI( UIAction_ShowPlayersUI* Action, OnlineSubsystem* OnlineSub );
		void OnShowFriendsUI( UIAction_ShowFriendsUI* Action, OnlineSubsystem* OnlineSub );
		Byte GetNATType();
		Bool CanPlayOnline( Int ControllerId );
		Bool HasLinkConnection();
		Byte GetLoginStatus( Int ControllerId );
		Int GetBestControllerId(, LocalPlayer* LP, Int PlayerIndex, Int ControllerId );
		void OnConsoleCommand( UIAction_ConsoleCommand* Action, LocalPlayer* PlayerOwner );
		Bool DisableWidget( Int PlayerIndex );
		Bool EnableWidget( Int PlayerIndex );
		void OnChangeVisibility( UIAction_ChangeVisibility* Action );
		UIScreenObject* GetParent();
		void GetSupportedUIActionKeyNames( Array<Name> out_KeyNames );
		void SetInputMask( Byte NewInputMask, Bool bRecurse, Int I );
		void DisablePlayerInput( Byte PlayerIndex, Bool bRecurse, Byte NewPlayerInputMask );
		void EnablePlayerInput( Byte PlayerIndex, Bool bRecurse, Byte NewPlayerInputMask );
		Bool IsHidden();
		Bool IsVisible();
		void SetVisibility( Bool bIsVisible );
		void PrivateSetVisibility( Bool bVisible, Bool bCouldAcceptFocus );
		Bool IsLoggedIn( Int ControllerId, Bool bRequireOnlineLogin );
		void RemovedFromParent( UIScreenObject* WidgetOwner );
		void RemovedChild( UIScreenObject* WidgetOwner, UIObject* OldChild, Array<UIObject*> ExclusionSet );
		void AddedChild( UIScreenObject* WidgetOwner, UIObject* NewChild );
		void PostInitialize();
		void Initialized();
		String GetWidgetPathName();
		Float GetAspectRatioAutoScaleFactor( Font* BaseFont );
		Matrix GetInverseCanvasToScreen();
		Matrix GetCanvasToScreen();
		Vector PixelToCanvas( Vector2D PixelPosition );
		Vector ScreenToCanvas( Vector4 ScreenPosition );
		Vector4 PixelToScreen( Vector2D PixelPosition );
		Vector2D ScreenToPixel( Vector4 ScreenPosition );
		Vector4 CanvasToScreen( Vector CanvasPosition );
		Vector DeProject( Vector PixelPosition );
		Vector Project( Vector CanvasPosition );
		void GetDockedWidgets( Array<UIObject*> out_DockedWidgets, Byte SourceFace, Byte TargetFace );
		Vector GetPositionVector( Bool bIncludeParentPosition );
		Float GetBounds( Byte Dimension, Byte OutputType, Bool bIgnoreDockPadding );
		Float GetPosition( Byte Face, Byte OutputType, Bool bZeroOrigin, Bool bIgnoreDockPadding );
		void SetPosition( Float NewValue, Byte Face, Byte InputType, Bool bZeroOrigin );
		Int GetBestPlayerIndex();
		Int GetSupportedPlayerCount();
		Int GetActivePlayerCount();
		Bool AcceptsPlayerInput( Int PlayerIndex );
		Bool IsPressed( Int PlayerIndex );
		Bool IsActive( Int PlayerIndex );
		Bool IsFocused( Int PlayerIndex );
		Bool IsEnabled( Int PlayerIndex, Bool bCheckOwnerChain );
		void OverrideLastFocusedControl( Int PlayerIndex, UIObject* ChildToFocus );
		UIObject* GetLastFocusedControl( Bool bRecurse, Int PlayerIndex );
		UIObject* GetFocusedControl( Bool bRecurse, Int PlayerIndex );
		Bool KillFocus( UIScreenObject* Sender, Int PlayerIndex );
		Bool SetFocusToChild( UIObject* ChildToFocus, Int PlayerIndex );
		Bool SetFocus( UIScreenObject* Sender, Int PlayerIndex );
		Bool CanPropagateFocusFor( UIObject* TestChild );
		Bool CanAcceptFocus( Int PlayerIndex );
		Bool IsNeverFocused();
		Bool NavigateFocus( UIScreenObject* Sender, Byte Direction, Int PlayerIndex );
		Bool PrevControl( UIScreenObject* Sender, Int PlayerIndex );
		Bool NextControl( UIScreenObject* Sender, Int PlayerIndex );
		Bool FocusLastControl( UIScreenObject* Sender, Int PlayerIndex );
		Bool FocusFirstControl( UIScreenObject* Sender, Int PlayerIndex );
		Bool IsHoldingShift( Int ControllerId );
		Bool IsHoldingAlt( Int ControllerId );
		Bool IsHoldingCtrl( Int ControllerId );
		Bool ConditionalPropagateEnabledState( Int PlayerIndex, Bool bForce );
		Bool DeactivateStateByClass( Class* StateToRemove, Int PlayerIndex, UIState* StateThatWasRemoved );
		Bool DeactivateState( UIState* StateToRemove, Int PlayerIndex );
		Bool ActivateStateByClass( Class* StateToActivate, Int PlayerIndex, UIState* StateThatWasAdded );
		Bool ActivateState( UIState* StateToActivate, Int PlayerIndex );
		Bool HasActiveStateOfClass( Class* StateClass, Int PlayerIndex, Int StateIndex );
		UIState* GetCurrentState( Int PlayerIndex );
		Bool SetEnabled( Bool bEnabled, Int PlayerIndex );
		void FindEventsOfClass( Class* EventClassToFind, Array<UIEvent*> out_EventInstances, UIState* LimitScope, Bool bExactClass );
		void ActivateEventByClass( Int PlayerIndex, Class* EventClassToActivate, Object* InEventActivator, Bool bActivateImmediately, Array<Int> IndicesToActivate, Array<UIEvent*> out_ActivatedEvents );
		Float GetViewportHeight();
		Float GetViewportWidth();
		Bool GetViewportSize( Vector2D out_ViewportSize );
		Bool GetViewportOrigin( Vector2D out_ViewportOrigin );
		Float GetViewportScale();
		Bool GetViewportOffset( Vector2D out_ViewportOffset );
		void RebuildNavigationLinks();
		void RequestPrimitiveReview( Bool bReinitializePrimitives, Bool bReviewPrimitiveUsage );
		void RequestFormattingUpdate();
		void RequestSceneUpdate( Bool bDockingStackChanged, Bool bPositionsChanged, Bool bNavLinksOutdated, Bool bWidgetStylesChanged );
		Int GetObjectCount();
		Array<UIObject*> GetChildren( Bool bRecurse, Array<UIObject*> ExclusionSet );
		Bool ContainsChildOfClass( Class* SearchClass, Bool bRecurse );
		Bool ContainsChild( UIObject* Child, Bool bRecurse );
		Int FindChildIndex( Name WidgetName );
		UIObject* FindChildUsingID( WIDGET_ID WidgetID, Bool bRecurse );
		UIObject* FindChild( Name WidgetName, Bool bRecurse );
		Bool ReplaceChild( UIObject* ExistingChild, UIObject* NewChild );
		Array<UIObject*> RemoveChildren( Array<UIObject*> ChildrenToRemove );
		Bool RemoveChild( UIObject* ExistingChild, Array<UIObject*> ExclusionSet );
		Int InsertChild( UIObject* NewChild, Int InsertIndex, Bool bRenameExisting );
		void Initialize( UIScene* inOwnerScene, UIObject* inOwner );
		UIObject* CreateWidget( UIScreenObject* Owner, Class* WidgetClass, Object* WidgetArchetype, Name WidgetName );
		Bool PlayUISound( Name SoundCueName, Int PlayerIndex );
		LocalPlayer* GetPlayerOwner( Int PlayerIndex );
		void InitializePlayerTracking();
		void RemovePlayerData( Int PlayerIndex, LocalPlayer* RemovedPlayer );
		void CreatePlayerData( Int PlayerIndex, LocalPlayer* AddedPlayer );
		Bool IsInitialized();
		void OnPreRenderCallBack();
		void NotifyVisibilityChanged( UIScreenObject* SourceWidget, Bool bIsVisible );
		void NotifyActiveStateChanged( UIScreenObject* Sender, Int PlayerIndex, UIState* NewlyActiveState, UIState* PreviouslyActiveState );
		void NotifyResolutionChanged( Vector2D OldViewportsize, Vector2D NewViewportSize );
		void NotifyPositionChanged( UIScreenObject* Sender );
		Bool OnProcessInputAxis( SubscribedInputEventParameters EventParms );
		Bool OnProcessInputKey( SubscribedInputEventParameters EventParms );
		Bool OnRawInputAxis( InputEventParameters EventParms );
		Bool OnRawInputKey( InputEventParameters EventParms );
		void NotifyActiveSkinChanged();
	};

	class UIComponent: public Component
	{
		DECLARE_PACKAGE_CLASS( UIComponent, Component, Engine )

	public:
	};

	class UIComp_Event: public UIComponent
	{
		DECLARE_PACKAGE_CLASS( UIComp_Event, UIComponent, Engine )

	public:

		Array<DefaultEventSpecification> DefaultEvents; //offset = 72, size = 12
		UISequence* EventContainer; //offset = 84, size = 4
		UIEvent_ProcessInput* InputProcessor; //offset = 88, size = 4
		Array<Name> DisabledEventAliases; //offset = 92, size = 12

		void UnregisterInputEvents( UIState* InputEventOwner, Int PlayerIndex );
		void RegisterInputEvents( UIState* InputEventOwner, Int PlayerIndex );
	};

	class UIEventContainer: public Interface
	{
		DECLARE_PACKAGE_CLASS( UIEventContainer, Interface, Engine )

	public:

		void RemoveSequenceObjects( Array<SequenceObject*> ObjectsToRemove );
		void RemoveSequenceObject( SequenceObject* ObjectToRemove );
		Bool AddSequenceObject( SequenceObject* NewObj, Bool bRecurse );
		void GetUIEvents( Array<UIEvent*> out_Events, Class* LimitClass );
	};

	class UIInputConfiguration: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( UIInputConfiguration, UIRoot, Engine )

	public:

		Array<UIInputAliasClassMap> WidgetInputAliases; //offset = 60, size = 12
		Array<UIAxisEmulationDefinition> AxisEmulationDefinitions; //offset = 72, size = 12

		void LoadInputAliasClasses();
	};

	const char* DEFAULT_UISKIN = "DefaultUISkin;

	struct UIAxisEmulationData
	{
		Bool bEnabled: 1; //offset = 16, size = 4
	};

	struct UIKeyRepeatData
	{
		Name CurrentRepeatKey; //offset = 0, size = 8
		Double NextRepeatTime; //offset = 8, size = 8
	};

	class UIInteraction: public Interaction
	{
		DECLARE_PACKAGE_CLASS( UIInteraction, Interaction, Engine )

	public:

		Pointer VfTable_FExec; //offset = 108, size = 4
		Pointer VfTable_FGlobalDataStoreClientManager; //offset = 112, size = 4
		Class* SceneClientClass; //offset = 116, size = 4
		GameUISceneClient* SceneClient; //offset = 120, size = 4
		String UISkinName; //offset = 124, size = 12
		Array<Name> UISoundCueNames; //offset = 136, size = 12
		Array<Name> SupportedDoubleClickKeys; //offset = 148, size = 12
		DataStoreClient* DataStoreManager; //offset = 160, size = 4
		UIInputConfiguration* UIInputConfig; //offset = 164, size = 4
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> WidgetInputAliasLookupTable; //offset = 168, size = 20
		Bool bProcessInput: 1; //offset = 188, size = 4
		Bool bDisableToolTips: 1; //offset = 188, size = 4
		Bool bFocusOnActive: 1; //offset = 188, size = 4
		Bool bCaptureUnprocessedInput: 1; //offset = 188, size = 4
		Float UIJoystickDeadZone; //offset = 192, size = 4
		Float UIAxisMultiplier; //offset = 196, size = 4
		Float AxisRepeatDelay; //offset = 200, size = 4
		Float MouseButtonRepeatDelay; //offset = 204, size = 4
		Float DoubleClickTriggerSeconds; //offset = 208, size = 4
		Int DoubleClickPixelTolerance; //offset = 212, size = 4
		Float ToolTipInitialDelaySeconds; //offset = 216, size = 4
		Float ToolTipExpirationSeconds; //offset = 220, size = 4
		Bool bFocusedStateRules: 1; //offset = 224, size = 4
		UIKeyRepeatData MouseButtonRepeatInfo; //offset = 228, size = 16
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> AxisEmulationDefinitions; //offset = 244, size = 20
		UIAxisEmulationData AxisInputEmulation[4]; //offset = 264, size = 20
		Pointer CanvasScene; //offset = 344, size = 4
		Bool bIsUIPrimitiveSceneInitialized: 1; //offset = 348, size = 4

		void NotifyGameSessionEnded();
		Byte GetNATType(, OnlineSubsystem* OnlineSub, SystemInterface SystemInterface, Byte Result );
		Bool CanPlayOnline( Int ControllerId, Byte Result, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		Bool IsLoggedIn( Int ControllerId, Bool bRequireOnlineLogin, Bool bResult, Byte LoginStatus );
		Bool HasLinkConnection(, Bool bResult, OnlineSubsystem* OnlineSub, SystemInterface SystemInterface );
		Byte GetLoginStatus( Int ControllerId, Byte Result, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		UIScene* FindSceneByTag( Name SceneTag, LocalPlayer* SceneOwner );
		Bool CloseScene( UIScene* Scene );
		Bool MergeScene( UIScene* SourceScene, UIScene* SceneTarget );
		Bool OpenScene( UIScene* Scene, LocalPlayer* SceneOwner, UIScene* OpenedScene );
		UIScene* CreateScene( Class* SceneClass, Name SceneTag, UIScene* SceneTemplate );
		UIScene* GetTransientScene();
		void SetMousePosition( Int NewMouseX, Int NewMouseY );
		UIObject* CreateTransientWidget( Class* WidgetClass, Name WidgetTag, UIObject* Owner );
		void NotifyPlayerRemoved( Int PlayerIndex, LocalPlayer* RemovedPlayer, Int PlayerCount, Int NextPlayerIndex, Int I, UIAxisEmulationData Empty );
		void NotifyPlayerAdded( Int PlayerIndex, LocalPlayer* AddedPlayer, UIAxisEmulationData Empty );
		Bool PlayUISound( Name SoundCueName, Int PlayerIndex );
		Bool IsMenuLevel( String MapName );
		DataStoreClient* GetDataStoreClient();
		Int GetPlayerControllerId( Int PlayerIndex );
		Int GetPlayerIndex( Int ControllerId );
		Int GetPlayerCount();
	};

	class UILayerBase: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( UILayerBase, UIRoot, Engine )

	public:
	};

	class UISceneClient: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( UISceneClient, UIRoot, Engine )

	public:

		Pointer VfTable_FExec; //offset = 60, size = 4
		Pointer VfTable_FCallbackEventDevice; //offset = 64, size = 4
		Pointer RenderViewport; //offset = 68, size = 4
		UISkin* ActiveSkin; //offset = 72, size = 4
		IntPoint MousePosition; //offset = 76, size = 8
		UIObject* ActiveControl; //offset = 84, size = 4
		DataStoreClient* DataStoreManager; //offset = 88, size = 4
		MaterialInstanceConstant* OpacityParameter; //offset = 92, size = 4
		Name OpacityParameterName; //offset = 96, size = 8
		Matrix CanvasToScreen; //offset = 112, size = 64
		Matrix InvCanvasToScreen; //offset = 176, size = 64
		PostProcessChain* UIScenePostProcess; //offset = 240, size = 4
		Bool bEnablePostProcess: 1; //offset = 244, size = 4

		UIScene* GetActiveScene();
		Matrix GetInverseCanvasToScreen( UIObject* Widget );
		Matrix GetCanvasToScreen( UIObject* Widget );
		void UpdateCanvasToScreen();
		Bool ChangeMouseCursor( Name CursorName );
		void SetMousePosition( Int NewMouseX, Int NewMouseY );
		Bool CloseScene( UIScene* Scene );
		Bool OpenScene( UIScene* Scene, LocalPlayer* SceneOwner, UIScene* OpenedScene );
		Bool InitializeScene( UIScene* Scene, LocalPlayer* SceneOwner, UIScene* InitializedScene );
		Bool IsSceneInitialized( UIScene* Scene );
		Bool IsUIActive( Int Flags );
		Bool ChangeActiveSkin( UISkin* NewActiveSkin );
	};

	class UIState: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( UIState, UIRoot, Engine )

	public:

		Pointer VfTable_IUIEventContainer; //offset = 60, size = 4
		UIStateSequence* StateSequence; //offset = 64, size = 4
		Array<InputKeyAction> StateInputActions; //offset = 68, size = 12
		Array<InputKeyAction> DisabledInputActions; //offset = 80, size = 12
		Name MouseCursorName; //offset = 92, size = 8
		Byte PlayerIndexMask; //offset = 100, size = 1
		Byte StackPriority; //offset = 101, size = 1

		void RemoveSequenceObjects( Array<SequenceObject*> ObjectsToRemove );
		void RemoveSequenceObject( SequenceObject* ObjectToRemove );
		Bool AddSequenceObject( SequenceObject* NewObj, Bool bRecurse );
		void GetUIEvents( Array<UIEvent*> out_Events, Class* LimitClass );
		Bool IsStateAllowed( UIScreenObject* Target, UIState* NewState, Int PlayerIndex );
		void OnDeactivate( UIScreenObject* Target, Int PlayerIndex, Bool bPoppedState );
		void OnActivate( UIScreenObject* Target, Int PlayerIndex, Bool bPushedState );
		Bool DeactivateState( UIScreenObject* Target, Int PlayerIndex );
		Bool ActivateState( UIScreenObject* Target, Int PlayerIndex );
		Bool IsActiveForPlayer( Int PlayerIndex );
		Bool IsWidgetClassSupported( Class* WidgetClass );
	};

	class UIState_Disabled: public UIState
	{
		DECLARE_PACKAGE_CLASS( UIState_Disabled, UIState, Engine )

	public:

		Bool IsStateAllowed( UIScreenObject* Target, UIState* NewState, Int PlayerIndex );
		Bool ActivateState( UIScreenObject* Target, Int PlayerIndex, Int I, Int EnabledIndex, Bool bResult );
	};

	class UIState_Enabled: public UIState
	{
		DECLARE_PACKAGE_CLASS( UIState_Enabled, UIState, Engine )

	public:
	};

	class UIString: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( UIString, UIRoot, Engine )

	public:

		Array<Pointer> Nodes; //offset = 60, size = 12
		UICombinedStyleData StringStyleData; //offset = 72, size = 140
		Vector2D StringExtent; //offset = 212, size = 8

		Bool ContainsMarkup();
		void GetAutoScaleValue( Vector2D BoundingRegionSize, Vector2D StringSize, Vector2D out_AutoScalePercent );
		String GetValue( Bool bReturnProcessedText );
		Bool SetValue( String InputString, Bool bIgnoreMarkup );
	};

	enum EProviderAccessType
	{
		ACCESS_ReadOnly,
		ACCESS_WriteAll,
	};

	struct UIDataProviderField
	{
		Name FieldTag; //offset = 0, size = 8
		Byte FieldType; //offset = 8, size = 1
		Array<UIDataProvider*> FieldProviders; //offset = 12, size = 12
	};

	class UIDataProvider: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( UIDataProvider, UIRoot, Engine )

	public:

		Byte WriteAccessType; //offset = 60, size = 1
		Array<ProviderChangedNotifies> ProviderChangedNotifies; //offset = 64, size = 12
		__OnDataProviderPropertyChange__Delegate __OnDataProviderPropertyChange__Delegate; //offset = 76, size = 12

		String GenerateFillerData( String DataTag );
		String GenerateScriptMarkupString( Name DataTag );
		Bool SetFieldValue( String FieldName, UIProviderScriptFieldValue FieldValue, Int ArrayIndex );
		Bool GetFieldValue( String FieldName, UIProviderScriptFieldValue FieldValue, Int ArrayIndex );
		void GetSupportedScriptFields( Array<UIDataProviderField> out_Fields );
		void RemovePropertyNotificationChangeRequest( InDelegate InDelegate, Int Index );
		void AddPropertyNotificationChangeRequest( InDelegate InDelegate, Int NewIndex );
		void NotifyPropertyChanged( Name PropTag, Int Index, Subscriber Subscriber );
		void OnDataProviderPropertyChange( UIDataProvider* SourceProvider, Name PropTag );
	};

	class UIDataStore: public UIDataProvider
	{
		DECLARE_PACKAGE_CLASS( UIDataStore, UIDataProvider, Engine )

	public:

		Name Tag; //offset = 88, size = 8
		Array<RefreshSubscriberNotifies> RefreshSubscriberNotifies; //offset = 96, size = 12
		__OnDataStoreValueUpdated__Delegate __OnDataStoreValueUpdated__Delegate; //offset = 108, size = 12

		void OnCommit();
		void RefreshSubscribers( Name PropertyTag, Bool bInvalidateValues, UIDataProvider* SourceProvider, Int ArrayIndex, Int idx, Subscriber Subscriber, Array<SubscriberArrayCopy> SubscriberArrayCopy );
		Bool NotifyGameSessionEnded();
		void SubscriberDetached( Subscriber Subscriber, Int SubscriberNotifyIndex );
		void SubscriberAttached( Subscriber Subscriber, Int SubscriberNotifyIndex );
		void Unregistered( LocalPlayer* PlayerOwner );
		void Registered( LocalPlayer* PlayerOwner );
		void OnDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
	};

	class UIStyle: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( UIStyle, UIRoot, Engine )

	public:

		STYLE_ID StyleID; //offset = 60, size = 16
		Name StyleTag; //offset = 76, size = 8
		String StyleName; //offset = 84, size = 12
		String StyleGroupName; //offset = 96, size = 12
		Class* StyleDataClass; //offset = 108, size = 4
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> StateDataMap; //offset = 112, size = 20

		UIStyle_Data* GetDefaultStyle();
		UIStyle_Data* GetStyleForStateByClass( Class* StateClass );
		UIStyle_Data* GetStyleForState( UIState* StateObject );
	};

	struct UISoundCue
	{
		Name SoundName; //offset = 0, size = 8
		SoundCue* SoundToPlay; //offset = 8, size = 4
	};

	class UISkin: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UISkin, UIDataStore, Engine )

	public:

		Array<UIStyle*> Styles; //offset = 120, size = 12
		Array<String> StyleGroups; //offset = 132, size = 12
		Array<UISoundCue> SoundCues; //offset = 144, size = 12
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> StyleLookupTable; //offset = 156, size = 20
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> StyleNameMap; //offset = 176, size = 20
		Map_Mirror StyleGroupMap; //offset = 196, size = 20
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> CursorMap; //offset = 216, size = 20
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> SoundCueMap; //offset = 236, size = 20

		void GetStyleGroups( Array<String> StyleGroupArray, Bool bIncludeInheritedGroups );
		Int FindStyleGroupIndex( String StyleGroupName );
		String GetStyleGroupAtIndex( Int Index );
		Bool RenameStyleGroup( String OldStyleGroupName, String NewStyleGroupName );
		Bool RemoveStyleGroupName( String StyleGroupName );
		Bool AddStyleGroupName( String StyleGroupName );
		Bool IsInheritedGroupName( String StyleGroupName );
		void GetSkinSoundCues( Array<UISoundCue> out_SoundCues );
		Bool GetUISoundCue( Name SoundCueName, SoundCue* out_UISoundCue );
		Bool RemoveUISoundCue( Name SoundCueName );
		Bool AddUISoundCue( Name SoundCueName, SoundCue* SoundToPlay );
		UITexture* GetCursorResource( Name CursorName );
		void GetAvailableStyles( Array<UIStyle*> out_Styles, Bool bIncludeInheritedStyles );
	};

	class UIAction_SetDatastoreBinding: public UIAction_DataStore
	{
		DECLARE_PACKAGE_CLASS( UIAction_SetDatastoreBinding, UIAction_DataStore, Engine )

	public:

		String NewMarkup; //offset = 252, size = 12
	};

	const char* CONTEXTMENU_BINDING_INDEX = 10;
	const char* TOOLTIP_BINDING_INDEX = 10;
	const char* FIRST_DEFAULT_DATABINDING_INDEX = 10;

	class UIObject: public UIScreenObject
	{
		DECLARE_PACKAGE_CLASS( UIObject, UIScreenObject, Engine )

	public:

		WIDGET_ID WidgetID; //offset = 352, size = 16
		Name WidgetTag; //offset = 368, size = 8
		UIObject* Owner; //offset = 376, size = 4
		UIScene* OwnerScene; //offset = 380, size = 4
		UIStyleReference PrimaryStyle; //offset = 384, size = 32
		UINavigationData NavigationTargets; //offset = 416, size = 36
		Int TabIndex; //offset = 452, size = 4
		UIDockingSet DockTargets; //offset = 456, size = 56
		Float RenderBounds[4]; //offset = 512, size = 4
		Vector2D RenderBoundsVertices[4]; //offset = 528, size = 8
		UIRotation Rotation; //offset = 560, size = 112
		Vector RenderOffset; //offset = 672, size = 12
		Int PrivateFlags; //offset = 684, size = 4
		UIDataStoreBinding ToolTip; //offset = 688, size = 48
		UIDataStoreBinding ContextMenuData; //offset = 736, size = 48
		UIObject* AnimationParent; //offset = 784, size = 4
		Vector AnimationPosition; //offset = 788, size = 12
		Array<UIAnimSeqRef> AnimStack; //offset = 800, size = 12
		Array<StyleSubscribers> StyleSubscribers; //offset = 812, size = 12
		Bool bEnableActiveCursorUpdates: 1; //offset = 824, size = 4
		Bool bSupportsPrimaryStyle: 1; //offset = 824, size = 4
		Bool bDebugShowBounds: 1; //offset = 824, size = 4
		Color DebugBoundsColor; //offset = 828, size = 4
		__OnCreate__Delegate __OnCreate__Delegate; //offset = 832, size = 12
		__OnValueChanged__Delegate __OnValueChanged__Delegate; //offset = 844, size = 12
		__OnRefreshSubscriberValue__Delegate __OnRefreshSubscriberValue__Delegate; //offset = 856, size = 12
		__OnPressed__Delegate __OnPressed__Delegate; //offset = 868, size = 12
		__OnPressRepeat__Delegate __OnPressRepeat__Delegate; //offset = 880, size = 12
		__OnPressRelease__Delegate __OnPressRelease__Delegate; //offset = 892, size = 12
		__OnClicked__Delegate __OnClicked__Delegate; //offset = 904, size = 12
		__OnDoubleClick__Delegate __OnDoubleClick__Delegate; //offset = 916, size = 12
		__OnQueryToolTip__Delegate __OnQueryToolTip__Delegate; //offset = 928, size = 12
		__OnOpenContextMenu__Delegate __OnOpenContextMenu__Delegate; //offset = 940, size = 12
		__OnCloseContextMenu__Delegate __OnCloseContextMenu__Delegate; //offset = 952, size = 12
		__OnContextMenuItemSelected__Delegate __OnContextMenuItemSelected__Delegate; //offset = 964, size = 12
		__OnUIAnimEnd__Delegate __OnUIAnimEnd__Delegate; //offset = 976, size = 12

		void OnUIAnimEnd( UIObject* AnimTarget, Int AnimIndex, UIAnimationSeq* AnimSeq );
		void UIAnimEnd( Int SeqIndex, Int I, Bool bRemove );
		void ClearUIAnimation( Name AnimName, UIAnimationSeq* AnimSeq, Int idx );
		void StopUIAnimation( Name AnimName, UIAnimationSeq* AnimSeq, Bool bFinalize, Int I, Int idx, Int FIdx, UIAnimationSeq* Seq, UIObject* TargetWidget );
		void PlayUIAnimation( Name AnimName, UIAnimationSeq* AnimSeqTemplate, Float PlaybackRate, Bool bLoop, Float InitialPosition, UIAnimationSeq* TargetAnimSeq, GameUISceneClient* SClient, Int idx );
		void AnimSetBottom( Float NewBottom );
		void AnimSetRight( Float NewRight );
		void AnimSetTop( Float NewTop );
		void AnimSetLeft( Float NewLeft );
		void AnimSetScale( Float NewScale );
		void AnimSetRotation( Rotator NewRotation );
		void AnimSetRelPosition( Vector NewPosition, Vector InitialPosition );
		void AnimSetPosition( Vector NewPosition );
		void AnimSetColor( LinearColor NewColor );
		void AnimSetVisibility( Bool bIsVisible );
		void AnimSetOpacity( Float NewOpacity );
		void OnSetDatastoreBinding( UIAction_SetDatastoreBinding* Action, Subscriber Subscriber );
		void LogRenderBounds( Int Indent );
		UIScreenObject* GetParent(, UIScreenObject* Result );
		UIObject* GetOwner();
		UIScene* GetScene();
		void TickAnim( Float DeltaTime );
		Int FindStyleSubscriberIndexById( Name StyleSubscriberId );
		Int FindStyleSubscriberIndex( Subscriber Subscriber );
		void RemoveStyleSubscriber( Subscriber Subscriber );
		void AddStyleSubscriber( Subscriber Subscriber );
		Float GetPositionExtent( Byte Face, Bool bIncludeRotation );
		void GetPositionExtents( Float MinX, Float MaxX, Float MinY, Float MaxY, Bool bIncludeRotation );
		Bool NeedsActiveCursorUpdates();
		void SetActiveCursorUpdate( Bool bShouldReceiveCursorUpdates );
		void SetPrivateBehavior( Int Behavior, Bool Value, Bool bRecurse );
		Bool IsPrivateBehaviorSet( Int Behavior );
		Bool CanAcceptFocus( Int PlayerIndex );
		Bool SetForcedNavigationTarget( Byte Face, UIObject* NavTarget, Bool bIsNullOverride );
		Bool SetNavigationTarget( Byte Face, UIObject* NewNavTarget );
		Bool IsDockedTo( UIScreenObject* TargetWidget, Byte SourceFace, Byte TargetFace );
		Bool SetDockParameters( Byte SourceFace, UIScreenObject* Target, Byte TargetFace, Float PaddingValue, Byte PaddingInputType, Bool bModifyPaddingScaleType );
		Bool SetDockPadding( Byte SourceFace, Float PaddingValue, Byte PaddingInputType, Bool bModifyPaddingScaleType );
		Bool SetDockTarget( Byte SourceFace, UIScreenObject* Target, Byte TargetFace );
		Bool IsContainedBy( UIObject* TestWidget );
		void NotifyValueChanged( Int PlayerIndex, Int NotifyFlags );
		Matrix GetRotationMatrix( Bool bIncludeParentRotations );
		Matrix GenerateTransformMatrix( Bool bIncludeParentTransforms );
		Vector GetAnchorPosition( Bool bRelativeToWidget, Bool bPixelSpace );
		void UpdateRotationMatrix();
		void RotateWidget( Rotator NewRotationAmount, Bool bAccumulateRotation );
		void SetAnchorPosition( Vector NewAnchorPosition, Byte InputType );
		Bool HasTransform( Bool bIncludeParentTransforms );
		String GetToolTipValue();
		String GenerateSceneDataStoreMarkup( String Group );
		void ClearDefaultDataBinding( Int BindingIndex );
		void GetDefaultDataStores( Array<UIDataStore*> out_BoundDataStores );
		Bool ResolveDefaultDataBinding( Int BindingIndex );
		String GetDefaultDataBinding( Int BindingIndex );
		void SetDefaultDataBinding( String MarkupText, Int BindingIndex );
		void OnContextMenuItemSelected( UIContextMenu* ContextMenu, Int PlayerIndex, Int ItemIndex );
		Bool OnCloseContextMenu( UIContextMenu* ContextMenu, Int PlayerIndex );
		Bool OnOpenContextMenu( UIObject* Sender, Int PlayerIndex, UIContextMenu* CustomContextMenu );
		Bool OnQueryToolTip( UIObject* Sender, UIToolTip* CustomToolTip );
		void OnDoubleClick( UIScreenObject* EventObject, Int PlayerIndex );
		Bool OnClicked( UIScreenObject* EventObject, Int PlayerIndex );
		void OnPressRelease( UIScreenObject* EventObject, Int PlayerIndex );
		void OnPressRepeat( UIScreenObject* EventObject, Int PlayerIndex );
		void OnPressed( UIScreenObject* EventObject, Int PlayerIndex );
		Bool OnRefreshSubscriberValue( UIObject* Sender, Int BindingIndex );
		void OnValueChanged( UIObject* Sender, Int PlayerIndex );
		void OnCreate( UIObject* CreatedWidget, UIScreenObject* CreatorContainer );
	};

	const char* ConsolePromptText = "(>;

	class ConsoleEntry: public UIObject
	{
		DECLARE_PACKAGE_CLASS( ConsoleEntry, UIObject, Engine )

	public:

		UILabel* ConsolePromptLabel; //offset = 988, size = 4
		UIImage* ConsolePromptBackground; //offset = 992, size = 4
		UIEditBox* InputBox; //offset = 996, size = 4
		UIImage* LowerConsoleBorder; //offset = 1000, size = 4
		UIImage* UpperConsoleBorder; //offset = 1004, size = 4
		Int CursorPosition; //offset = 1008, size = 4
		Bool bRenderCursor: 1; //offset = 1012, size = 4

		void SetValue( String NewValue );
		void SetupDockingLinks();
		void PostInitialize();
		void RemovedChild( UIScreenObject* WidgetOwner, UIObject* OldChild, Array<UIObject*> ExclusionSet );
		void AddedChild( UIScreenObject* WidgetOwner, UIObject* NewChild );
	};

	class UIDataStore_GameState: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_GameState, UIDataStore, Engine )

	public:

		__OnRefreshDataFieldValue__Delegate __OnRefreshDataFieldValue__Delegate; //offset = 120, size = 12

		Bool NotifyGameSessionEnded();
		void OnRefreshDataFieldValue();
	};

	class GameInfoDataProvider: public UIDynamicDataProvider
	{
		DECLARE_PACKAGE_CLASS( GameInfoDataProvider, UIDynamicDataProvider, Engine )

	public:

		GameReplicationInfo* GameDataSource; //offset = 108, size = 4

		void ProviderInstanceBound( Object* DataSourceInstance, GameReplicationInfo* GRI );
	};

	struct GameDataProviderTypes
	{
		Class* GameDataProviderClass; //offset = 0, size = 4
		Class* PlayerDataProviderClass; //offset = 4, size = 4
		Class* TeamDataProviderClass; //offset = 8, size = 4
	};

	class CurrentGameDataStore: public UIDataStore_GameState
	{
		DECLARE_PACKAGE_CLASS( CurrentGameDataStore, UIDataStore_GameState, Engine )

	public:

		GameDataProviderTypes ProviderTypes; //offset = 132, size = 12
		GameInfoDataProvider* GameData; //offset = 144, size = 4
		Array<PlayerDataProvider*> PlayerData; //offset = 148, size = 12
		Array<TeamDataProvider*> TeamData; //offset = 160, size = 12

		Bool NotifyGameSessionEnded();
		void ClearDataProviders( Int I );
		TeamDataProvider* GetTeamDataProvider( TeamInfo* TI, Int Index, TeamDataProvider* Provider );
		PlayerDataProvider* GetPlayerDataProvider( PlayerReplicationInfo* PRI, Int Index, PlayerDataProvider* Provider );
		Int FindTeamDataProviderIndex( TeamInfo* TI, Int I, Int Result );
		Int FindPlayerDataProviderIndex( PlayerReplicationInfo* PRI, Int I, Int Result );
		void RemoveTeamDataProvider( TeamInfo* TI, Int ExistingIndex );
		void AddTeamDataProvider( TeamInfo* TI, Int ExistingIndex, TeamDataProvider* DataProvider );
		void RemovePlayerDataProvider( PlayerReplicationInfo* PRI, Int ExistingIndex );
		void AddPlayerDataProvider( PlayerReplicationInfo* PRI, Int ExistingIndex, PlayerDataProvider* DataProvider );
		void CreateGameDataProvider( GameReplicationInfo* GRI );
	};

	class UIPropertyDataProvider: public UIDataProvider
	{
		DECLARE_PACKAGE_CLASS( UIPropertyDataProvider, UIDataProvider, Engine )

	public:

		Array<Class*> ComplexPropertyTypes; //offset = 88, size = 12

		Bool GetCustomPropertyValue( UIProviderScriptFieldValue PropertyValue, Int ArrayIndex );
	};

	class UIDynamicDataProvider: public UIPropertyDataProvider
	{
		DECLARE_PACKAGE_CLASS( UIDynamicDataProvider, UIPropertyDataProvider, Engine )

	public:

		Class* DataClass; //offset = 100, size = 4
		Object* DataSource; //offset = 104, size = 4

		Bool CleanupDataProvider();
		Object* GetDataSource();
		Bool IsValidDataSourceClass( Class* PotentialDataSourceClass );
		void ProviderInstanceUnbound( Object* DataSourceInstance );
		void ProviderInstanceBound( Object* DataSourceInstance );
		Bool UnbindProviderInstance();
		Bool BindProviderInstance( Object* DataSourceInstance );
	};

	class InventoryDataProvider: public UIDynamicDataProvider
	{
		DECLARE_PACKAGE_CLASS( InventoryDataProvider, UIDynamicDataProvider, Engine )

	public:
	};

	class WeaponDataProvider: public InventoryDataProvider
	{
		DECLARE_PACKAGE_CLASS( WeaponDataProvider, InventoryDataProvider, Engine )

	public:
	};

	class CurrentWeaponDataProvider: public WeaponDataProvider
	{
		DECLARE_PACKAGE_CLASS( CurrentWeaponDataProvider, WeaponDataProvider, Engine )

	public:
	};

	class UIDynamicFieldProvider: public UIDataProvider
	{
		DECLARE_PACKAGE_CLASS( UIDynamicFieldProvider, UIDataProvider, Engine )

	public:

		Array<UIProviderScriptFieldValue> PersistentDataFields; //offset = 88, size = 12
		Array<UIProviderScriptFieldValue> RuntimeDataFields; //offset = 100, size = 12
		Map_Mirror PersistentCollectionData; //offset = 112, size = 20
		Map_Mirror RuntimeCollectionData; //offset = 132, size = 20

		Int FindCollectionValueIndex( Name FieldName, String ValueToFind, Bool bPersistent, Name CellTag );
		Bool GetCollectionValue( Name FieldName, Int ValueIndex, String out_Value, Bool bPersistent, Name CellTag );
		Bool ClearCollectionValueArray( Name FieldName, Bool bPersistent, Name CellTag );
		Bool ReplaceCollectionValueByIndex( Name FieldName, Int ValueIndex, String NewValue, Bool bPersistent, Name CellTag );
		Bool ReplaceCollectionValue( Name FieldName, String CurrentValue, String NewValue, Bool bPersistent, Name CellTag );
		Bool RemoveCollectionValueByIndex( Name FieldName, Int ValueIndex, Bool bPersistent, Name CellTag );
		Bool RemoveCollectionValue( Name FieldName, String ValueToRemove, Bool bPersistent, Name CellTag );
		Bool InsertCollectionValue( Name FieldName, String NewValue, Int InsertIndex, Bool bPersistent, Bool bAllowDuplicateValues, Name CellTag );
		Bool SetCollectionValueArray( Name FieldName, Array<String> CollectionValues, Bool bClearExisting, Int InsertIndex, Bool bPersistent, Name CellTag );
		Bool GetCollectionValueArray( Name FieldName, Array<String> out_DataValueArray, Bool bPersistent, Name CellTag );
		Bool GetCollectionValueSchema( Name FieldName, Array<Name> out_CellTagArray, Bool bPersistent );
		void SavePersistentProviderData();
		Bool SetField( Name FieldName, UIProviderScriptFieldValue FieldValue, Bool bChangeExistingOnly );
		Bool GetField( Name FieldName, UIProviderScriptFieldValue out_Field );
		Bool ClearFields( Bool bReinitializeRuntimeFields );
		Int FindFieldIndex( Name FieldName, Bool bSearchPersistentFields );
		Bool RemoveField( Name FieldName );
		Bool AddField( Name FieldName, Byte FieldType, Bool bPersistent, Int out_InsertPosition );
	};

	class GameUISceneClient: public UISceneClient
	{
		DECLARE_PACKAGE_CLASS( GameUISceneClient, UISceneClient, Engine )

	public:

		Array<UIScene*> ActiveScenes; //offset = 248, size = 12
		UITexture* CurrentMouseCursor; //offset = 260, size = 4
		Bool bRenderCursor: 1; //offset = 264, size = 4
		Bool bUpdateInputProcessingStatus: 1; //offset = 264, size = 4
		Bool bUpdateCursorRenderStatus: 1; //offset = 264, size = 4
		Float LatestDeltaTime; //offset = 268, size = 4
		Double DoubleClickStartTime; //offset = 272, size = 8
		IntPoint DoubleClickStartPosition; //offset = 280, size = 8
		Texture* DefaultUITexture[3]; //offset = 288, size = 4
		Map_Mirror InitialPressedKeys; //offset = 300, size = 20
		Bool bEnableDebugInput: 1; //offset = 320, size = 4
		Bool bRenderDebugInfo: 1; //offset = 320, size = 4
		Bool bRenderDebugInfoAtTop: 1; //offset = 320, size = 4
		Bool bRenderActiveControlInfo: 1; //offset = 320, size = 4
		Bool bRenderFocusedControlInfo: 1; //offset = 320, size = 4
		Bool bRenderTargetControlInfo: 1; //offset = 320, size = 4
		Bool bSelectVisibleTargetsOnly: 1; //offset = 320, size = 4
		Bool bInteractiveMode: 1; //offset = 320, size = 4
		Bool bDisplayFullPaths: 1; //offset = 320, size = 4
		Bool bShowWidgetPath: 1; //offset = 320, size = 4
		Bool bShowRenderBounds: 1; //offset = 320, size = 4
		Bool bShowCurrentState: 1; //offset = 320, size = 4
		Bool bShowMousePos: 1; //offset = 320, size = 4
		Bool bRestrictActiveControlToFocusedScene: 1; //offset = 320, size = 4
		Float OverlaySceneAlphaModulation; //offset = 324, size = 4
		UIScreenObject* DebugTarget; //offset = 328, size = 4
		Array<UIAnimationSeq*> AnimSequencePool; //offset = 332, size = 12
		Array<UIObject*> AnimSubscribers; //offset = 344, size = 12

		UIAnimationSeq* AnimLookupSequence( Name SequenceName, Int I );
		void AnimUnSubscribe( UIObject* Target, Int I );
		void AnimSubscribe( UIObject* Target, Int I );
		void ShowMenuProgression( DataStoreClient* DSClient, UIDataStore_Registry* RegistryDS, UIDynamicFieldProvider* RegistryProvider, Array<String> Values, Array<Name> SceneTags, Int SceneIndex, Int MenuIndex );
		void ShowDataStores( Bool bVerbose );
		void RefreshFormatting( UIScene* ActiveScene );
		void ShowDataStoreField( String DataStoreMarkup, String Value );
		void CloseMenu( Name SceneName, Int I );
		void OpenMenu( String MenuPath, Int PlayerIndex, UIScene* Scene, LocalPlayer* SceneOwner );
		void CreateMenu( Class* SceneClass, Int PlayerIndex, UIScene* Scene, LocalPlayer* SceneOwner );
		void ToggleDebugInput( Bool bEnable );
		void ShowMenuStates( Int I );
		void ShowRenderBounds( Int I );
		void ShowDockingStacks( Int I );
		void RestoreMenuProgression( UIScene* BaseScene, DataStoreClient* DSClient, UIDataStore_Registry* RegistryDS, UIDynamicFieldProvider* RegistryProvider, UIScene* CurrentScene, UIScene* NextSceneTemplate, UIScene* SceneInstance, String ScenePathName, Bool bHasValidNetworkConnection );
		void ClearMenuProgression( DataStoreClient* DSClient, UIDataStore_Registry* RegistryDS, UIDynamicFieldProvider* RegistryProvider );
		void SaveMenuProgression( DataStoreClient* DSClient, UIDataStore_Registry* RegistryDS, UIDynamicFieldProvider* RegistryProvider, Int I, UIScene* SceneResource, UIScene* CurrentScene, UIScene* NextScene, String ScenePathName );
		UIScene* GetActiveScene(, UIScene* TopmostScene );
		void NotifyPlayerRemoved( Int PlayerIndex, LocalPlayer* RemovedPlayer, Int SceneIndex );
		void NotifyPlayerAdded( Int PlayerIndex, LocalPlayer* AddedPlayer, Int SceneIndex );
		void NotifyLinkStatusChanged( Bool bConnected, UIScene* Scene );
		void NotifyOnlineServiceStatusChanged( Byte NewConnectionStatus, UIScene* Scene );
		void NotifyGameSessionEnded( Int I, Array<UIScene*> CurrentlyActiveScenes );
		Bool CanShowToolTips();
		void ConditionalPause( Bool bDesiredPauseState, PlayerController* PlayerOwner );
		Bool SetActiveControl( UIObject* NewActiveControl );
		Bool CanUnpauseInternalUI();
		void RequestCursorRenderUpdate();
		void RequestInputProcessingUpdate();
		UIScene* FindSceneByTag( Name SceneTag, LocalPlayer* SceneOwner );
		UIObject* CreateTransientWidget( Class* WidgetClass, Name WidgetTag, UIObject* Owner );
		UIScene* CreateScene( Class* SceneClass, Name SceneTag, UIScene* SceneTemplate );
		UIScene* GetTransientScene();
		Byte GetCurrentNetMode();
	};

	class PickupDataProvider: public UIDynamicDataProvider
	{
		DECLARE_PACKAGE_CLASS( PickupDataProvider, UIDynamicDataProvider, Engine )

	public:
	};

	class PlayerDataProvider: public UIDynamicDataProvider
	{
		DECLARE_PACKAGE_CLASS( PlayerDataProvider, UIDynamicDataProvider, Engine )

	public:
	};

	class PlayerOwnerDataProvider: public PlayerDataProvider
	{
		DECLARE_PACKAGE_CLASS( PlayerOwnerDataProvider, PlayerDataProvider, Engine )

	public:

		PlayerDataProvider* PlayerData; //offset = 108, size = 4

		Bool CleanupDataProvider();
		void SetPlayerDataProvider( PlayerDataProvider* NewPlayerData, Object* PRI );
	};

	struct PlayerDataProviderTypes
	{
		Class* PlayerOwnerDataProviderClass; //offset = 0, size = 4
		Class* CurrentWeaponDataProviderClass; //offset = 4, size = 4
		Class* WeaponDataProviderClass; //offset = 8, size = 4
		Class* PowerupDataProviderClass; //offset = 12, size = 4
	};

	class PlayerOwnerDataStore: public UIDataStore_GameState
	{
		DECLARE_PACKAGE_CLASS( PlayerOwnerDataStore, UIDataStore_GameState, Engine )

	public:

		PlayerDataProviderTypes ProviderTypes; //offset = 132, size = 16
		PlayerOwnerDataProvider* PlayerData; //offset = 148, size = 4
		CurrentWeaponDataProvider* CurrentWeapon; //offset = 152, size = 4
		Array<WeaponDataProvider*> WeaponList; //offset = 156, size = 12
		Array<PowerupDataProvider*> PowerupList; //offset = 168, size = 12

		Bool NotifyGameSessionEnded();
		void ClearDataProviders( Int I );
		void SetPlayerDataProvider( PlayerDataProvider* NewPlayerData );
	};

	class UISettingsProvider: public UIPropertyDataProvider
	{
		DECLARE_PACKAGE_CLASS( UISettingsProvider, UIPropertyDataProvider, Engine )

	public:

		Name ProviderTag; //offset = 100, size = 8

		Bool CleanupDataProvider();
		Bool OnModifiedProperty( Name PropertyName, UIObject* Widget );
		void SavePropertyValue( Name PropertyName, UIObject* Widget );
		void LoadPropertyValue( Name PropertyName, UIObject* Widget );
	};

	class UIDataStore_Settings: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_Settings, UIDataStore, Engine )

	public:
	};

	class PlayerSettingsProvider: public UISettingsProvider
	{
		DECLARE_PACKAGE_CLASS( PlayerSettingsProvider, UISettingsProvider, Engine )

	public:

		void OnUnregister();
		void OnRegister( LocalPlayer* InPlayer );
	};

	class UIDataStore_PlayerSettings: public UIDataStore_Settings
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_PlayerSettings, UIDataStore_Settings, Engine )

	public:

		Array<String> PlayerSettingsProviderClassNames; //offset = 120, size = 12
		Array<Class*> PlayerSettingsProviderClasses; //offset = 132, size = 12
		Array<PlayerSettingsProvider*> PlayerSettings; //offset = 144, size = 12
		Int PlayerIndex; //offset = 156, size = 4

		Bool NotifyGameSessionEnded();
		void ClearDataProviders( Int I );
		LocalPlayer* GetPlayerOwner();
	};

	class PowerupDataProvider: public InventoryDataProvider
	{
		DECLARE_PACKAGE_CLASS( PowerupDataProvider, InventoryDataProvider, Engine )

	public:

		Bool IsValidDataSourceClass( Class* PotentialDataSourceClass, Bool bResult );
	};

	class SceneDataStore: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( SceneDataStore, UIDataStore, Engine )

	public:

		Pointer VfTable_IUIListElementProvider; //offset = 120, size = 4
		Pointer VfTable_IUIListElementCellProvider; //offset = 124, size = 4
		UIScene* OwnerScene; //offset = 128, size = 4
		UIDynamicFieldProvider* SceneDataProvider; //offset = 132, size = 4

		Int FindCollectionValueIndex( Name FieldName, String ValueToFind, Bool bPersistent, Name CellTag );
		Bool GetCollectionValue( Name FieldName, Int ValueIndex, String out_Value, Bool bPersistent, Name CellTag );
		Bool ClearCollectionValueArray( Name FieldName, Bool bPersistent, Name CellTag );
		Bool ReplaceCollectionValueByIndex( Name FieldName, Int ValueIndex, String NewValue, Bool bPersistent, Name CellTag );
		Bool ReplaceCollectionValue( Name FieldName, String CurrentValue, String NewValue, Bool bPersistent, Name CellTag );
		Bool RemoveCollectionValueByIndex( Name FieldName, Int ValueIndex, Bool bPersistent, Name CellTag );
		Bool RemoveCollectionValue( Name FieldName, String ValueToRemove, Bool bPersistent, Name CellTag );
		Bool InsertCollectionValue( Name FieldName, String NewValue, Int InsertIndex, Bool bPersistent, Bool bAllowDuplicateValues, Name CellTag );
		Bool SetCollectionValueArray( Name FieldName, Array<String> CollectionValues, Bool bClearExisting, Int InsertIndex, Bool bPersistent, Name CellTag );
		Bool GetCollectionValueArray( Name FieldName, Array<String> out_DataValueArray, Bool bPersistent, Name CellTag );
		Bool ClearFields( Bool bReinitializeRuntimeFields );
		Int FindFieldIndex( Name FieldName, Bool bSearchPersistentFields );
		Bool RemoveField( Name FieldName );
		Bool AddField( Name FieldName, Byte FieldType, Bool bPersistent, Int out_InsertPosition );
	};

	class SessionSettingsProvider: public UISettingsProvider
	{
		DECLARE_PACKAGE_CLASS( SessionSettingsProvider, UISettingsProvider, Engine )

	public:

		Class* ProviderClientClass; //offset = 108, size = 4
		Class* ProviderClientMetaClass; //offset = 112, size = 4
		Class* ProviderClient; //offset = 116, size = 4

		Bool CleanupDataProvider();
		Bool IsValidDataSourceClass( Class* PotentialDataSourceClass );
		void ProviderClientUnbound( Class* DataSourceClass );
		void ProviderClientBound( Class* DataSourceClass );
		Bool UnbindProviderClient();
		Bool BindProviderClient( Class* DataSourceClass );
	};

	class UIDataStore_SessionSettings: public UIDataStore_Settings
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_SessionSettings, UIDataStore_Settings, Engine )

	public:

		Array<String> SessionSettingsProviderClassNames; //offset = 120, size = 12
		Array<Class*> SessionSettingsProviderClasses; //offset = 132, size = 12
		Array<SessionSettingsProvider*> SessionSettings; //offset = 144, size = 12

		Bool NotifyGameSessionEnded();
		void ClearDataProviders( Int I );
	};

	class TeamDataProvider: public UIDynamicDataProvider
	{
		DECLARE_PACKAGE_CLASS( TeamDataProvider, UIDynamicDataProvider, Engine )

	public:
	};

	class UIAnimationSeq: public UIAnimation
	{
		DECLARE_PACKAGE_CLASS( UIAnimationSeq, UIAnimation, Engine )

	public:

		Name SeqName; //offset = 60, size = 8
		Float SeqDuration; //offset = 68, size = 4
		Array<UIAnimTrack> Tracks; //offset = 72, size = 12
		Bool bAbsolutePositioning: 1; //offset = 84, size = 4

		void ApplyAnimation( UIObject* TargetWidget, Int TrackIndex, Float Position, Int LFI, Int NFI, UIAnimSeqRef AnimRefInst );
	};

	class UIButton: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIButton, UIObject, Engine )

	public:

		UIComp_DrawImage* BackgroundImageComponent; //offset = 988, size = 4
		Name ClickedCue; //offset = 992, size = 8

		void SetImage( Surface* NewImage );
	};

	class UICheckbox: public UIButton
	{
		DECLARE_PACKAGE_CLASS( UICheckbox, UIButton, Engine )

	public:

		Pointer VfTable_IUIDataStorePublisher; //offset = 1000, size = 4
		Name CheckedCue; //offset = 1004, size = 8
		Name UncheckedCue; //offset = 1012, size = 8
		UIDataStoreBinding ValueDataSource; //offset = 1020, size = 48
		UIComp_DrawImage* CheckedImageComponent; //offset = 1068, size = 4
		Bool bIsChecked: 1; //offset = 1072, size = 4

		void OnSetBoolValue( UIAction_SetBoolValue* Action );
		void SetValue( Bool bShouldBeChecked, Int PlayerIndex );
		Bool SaveSubscriberValue( Array<UIDataStore*> out_BoundDataStores, Int BindingIndex );
		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
		Bool IsChecked();
		void SetCheckImage( Surface* NewImage );
	};

	const char* INDEX_CHANGED_NOTIFY_MASK = 0x;
	const char* TEXT_CHANGED_NOTIFY_MASK = 0x;

	class UIComboBox: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIComboBox, UIObject, Engine )

	public:

		Pointer VfTable_IUIDataStorePublisher; //offset = 988, size = 4
		Class* ComboEditboxClass; //offset = 992, size = 4
		Class* ComboButtonClass; //offset = 996, size = 4
		Class* ComboListClass; //offset = 1000, size = 4
		UIEditBox* ComboEditbox; //offset = 1004, size = 4
		UIToggleButton* ComboButton; //offset = 1008, size = 4
		UIList* ComboList; //offset = 1012, size = 4
		UIComp_DrawCaption* CaptionRenderComponent; //offset = 1016, size = 4
		UIComp_DrawImage* BackgroundRenderComponent; //offset = 1020, size = 4
		UIDataStoreBinding CaptionDataSource; //offset = 1024, size = 48
		Name OpenList; //offset = 1072, size = 8
		Name DecrementCue; //offset = 1080, size = 8
		Bool bLockSelectedItem: 1; //offset = 1088, size = 4
		Bool bDockListToButton: 1; //offset = 1088, size = 4
		__CreateCustomComboEditbox__Delegate __CreateCustomComboEditbox__Delegate; //offset = 1092, size = 12
		__CreateCustomComboButton__Delegate __CreateCustomComboButton__Delegate; //offset = 1104, size = 12
		__CreateCustomComboList__Delegate __CreateCustomComboList__Delegate; //offset = 1116, size = 12

		void OnGetTextValue( UIAction_GetTextValue* Action );
		void ListItemSelected( UIList* Sender, Int PlayerIndex );
		void SelectedItemChanged( UIObject* Sender, Int PlayerIndex, String SelectedItemText );
		void EditboxTextChanged( UIObject* Sender, Int PlayerIndex );
		Bool ShowListClickHandler( UIScreenObject* EventObject, Int PlayerIndex, Bool bResult );
		void ButtonPressed( UIScreenObject* EventObject, Int PlayerIndex );
		void EditboxPressed( UIScreenObject* EventObject, Int PlayerIndex );
		void SetListDocking( Bool bDockToButton );
		Bool IsListDockedToButton();
		void SetEditboxText( String NewText, Int PlayerIndex, Bool bListItemsOnly, Bool bSkipNotification );
		void HideList( Int PlayerIndex );
		void ShowList( Int PlayerIndex );
		void SetVisibility( Bool bIsVisible );
		void PostInitialize();
		Bool SaveSubscriberValue( Array<UIDataStore*> out_BoundDataStores, Int BindingIndex );
		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
		UIList* CreateCustomComboList( UIComboBox* ListOwner );
		UIToggleButton* CreateCustomComboButton( UIComboBox* ButtonOwner );
		UIEditBox* CreateCustomComboEditbox( UIComboBox* EditboxOwner );
	};

	class UIComp_AutoAlignment: public UIComponent
	{
		DECLARE_PACKAGE_CLASS( UIComp_AutoAlignment, UIComponent, Engine )

	public:

		Byte HorzAlignment; //offset = 72, size = 1
		Byte VertAlignment; //offset = 73, size = 1
	};

	const char* ResizeBufferPixels = 5;

	enum EListWrapBehavior
	{
		LISTWRAP_None,
		LISTWRAP_Smooth,
	};

	enum ECellLinkType
	{
		LINKED_None,
		LINKED_Rows,
	};

	enum ECellAutoSizeMode
	{
		CELLAUTOSIZE_None,
		CELLAUTOSIZE_Uniform,
		CELLAUTOSIZE_Constrain,
	};

	struct CellHitDetectionInfo
	{
		Int HitColumn; //offset = 0, size = 4
		Int HitRow; //offset = 4, size = 4
		Int ResizeColumn; //offset = 8, size = 4
		Int ResizeRow; //offset = 12, size = 4
	};

	class UIList: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIList, UIObject, Engine )

	public:

		Pointer VfTable_IUIDataStorePublisher; //offset = 988, size = 4
		UIScreenValue_Extent RowHeight; //offset = 992, size = 8
		UIScreenValue_Extent MinColumnSize; //offset = 1000, size = 8
		UIScreenValue_Extent ColumnWidth; //offset = 1008, size = 8
		UIScreenValue_Extent HeaderCellPadding; //offset = 1016, size = 8
		UIScreenValue_Extent HeaderElementSpacing; //offset = 1024, size = 8
		UIScreenValue_Extent CellSpacing; //offset = 1032, size = 8
		UIScreenValue_Extent CellPadding; //offset = 1040, size = 8
		Int Index; //offset = 1048, size = 4
		Int TopIndex; //offset = 1052, size = 4
		Int MaxVisibleItems; //offset = 1056, size = 4
		Int ColumnCount; //offset = 1060, size = 4
		Int RowCount; //offset = 1064, size = 4
		Byte ColumnAutoSizeMode; //offset = 1068, size = 1
		Byte RowAutoSizeMode; //offset = 1069, size = 1
		Byte CellLinkType; //offset = 1070, size = 1
		Byte WrapType; //offset = 1071, size = 1
		Bool bEnableMultiSelect: 1; //offset = 1072, size = 4
		Bool bEnableVerticalScrollbar: 1; //offset = 1072, size = 4
		Bool bInitializeScrollbars: 1; //offset = 1072, size = 4
		Bool bAllowDisabledItemSelection: 1; //offset = 1072, size = 4
		Bool bSingleClickSubmission: 1; //offset = 1072, size = 4
		Bool bUpdateItemUnderCursor: 1; //offset = 1072, size = 4
		Bool bHoverStateOverridesSelected: 1; //offset = 1072, size = 4
		Bool bAllowColumnResizing: 1; //offset = 1072, size = 4
		UIScrollbar* VerticalScrollbar; //offset = 1076, size = 4
		UIStyleReference GlobalCellStyle[4]; //offset = 1080, size = 32
		UIStyleReference ColumnHeaderStyle; //offset = 1208, size = 32
		UIStyleReference ColumnHeaderBackgroundStyle[3]; //offset = 1240, size = 32
		UIStyleReference ItemOverlayStyle[4]; //offset = 1336, size = 32
		Bool bDisplayDataBindings: 1; //offset = 1464, size = 4
		Int ResizeColumn; //offset = 1468, size = 4
		Bool bSortingList: 1; //offset = 1472, size = 4
		Int SetIndexMutex; //offset = 1476, size = 4
		Int ValueChangeNotificationMutex; //offset = 1480, size = 4
		UIDataStoreBinding DataSource; //offset = 1484, size = 48
		DataProvider DataProvider; //offset = 1532, size = 8
		Array<Int> Items; //offset = 1540, size = 12
		Array<Int> SelectedItems; //offset = 1552, size = 12
		UIComp_ListElementSorter* SortComponent; //offset = 1564, size = 4
		UIComp_ListPresenter* CellDataComponent; //offset = 1568, size = 4
		Name SubmitDataSuccessCue; //offset = 1572, size = 8
		Name SubmitDataFailedCue; //offset = 1580, size = 8
		Name DecrementIndexCue; //offset = 1588, size = 8
		Name IncrementIndexCue; //offset = 1596, size = 8
		Name SortAscendingCue; //offset = 1604, size = 8
		Name SortDescendingCue; //offset = 1612, size = 8
		__OnSubmitSelection__Delegate __OnSubmitSelection__Delegate; //offset = 1620, size = 12
		__OnListElementsSorted__Delegate __OnListElementsSorted__Delegate; //offset = 1632, size = 12

		void OnStateChanged( UIScreenObject* Sender, Int PlayerIndex, UIState* NewlyActiveState, UIState* PreviouslyActiveState );
		void ClickedScrollZone( UIScrollbar* Sender, Float PositionPerc, Int PlayerIndex, Int MouseX, Int MouseY, Float MarkerPosition, Bool bDecrement, Int NewTopItem );
		Bool ShouldRenderColumnHeaders();
		void EnableColumnHeaderRendering( Bool bShouldRenderColHeaders );
		Bool IsValueChangeNotificationEnabled();
		void DisableValueChangeNotification();
		void EnableValueChangeNotification();
		Bool IsSetIndexEnabled();
		void DisableSetIndex();
		void EnableSetIndex();
		void DecrementAllMutexes( Bool bDispatchUpdates );
		void IncrementAllMutexes();
		Bool AllMutexesDisabled();
		void PostInitialize();
		void Initialized();
		void OnGetTextValue( UIAction_GetTextValue* Action );
		void OnSetListIndex( UIAction_SetListIndex* Action, Int OutputLinkIndex );
		Bool SaveSubscriberValue( Array<UIDataStore*> out_BoundDataStores, Int BindingIndex );
		Bool IsElementAutoSizingEnabled();
		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
		Bool IsHotTrackingEnabled();
		void SetHotTracking( Bool bShouldUpdateItemUnderCursor );
		Bool CanSelectElement( Int ElementIndex );
		Bool IsElementEnabled( Int ElementIndex );
		Bool SetTopIndex( Int NewTopIndex, Bool bClampValue );
		Bool SetIndex( Int NewIndex, Bool bClampValue, Bool bSkipNotification );
		Int FindItemIndex( String ItemValue, Int CellIndex );
		String GetElementValue( Int ElementIndex, Int CellIndex );
		Int GetCurrentItem();
		Array<Int> GetSelectedItems();
		Int GetResizeColumn( CellHitDetectionInfo ClickedCell );
		Int CalculateIndexFromCursorLocation( Bool bRequireValidIndex );
		Vector2D GetClientRegion();
		Float GetRowHeight( Int RowIndex, Bool bColHeader, Bool bReturnUnformattedValue );
		Float GetColumnWidth( Int ColumnIndex, Bool bColHeader, Bool bReturnUnformattedValue );
		void SetRowCount( Int NewRowCount );
		void SetColumnCount( Int NewColumnCount );
		Int GetTotalColumnCount();
		Int GetTotalRowCount();
		Int GetMaxNumVisibleColumns();
		Int GetMaxNumVisibleRows();
		Int GetMaxVisibleElementCount();
		Int GetItemCount();
		Int RemoveElement( Int ElementToRemove );
		Bool ScrollVertical( UIScrollbar* Sender, Float PositionChange, Bool bPositionMaxed );
		void OnListElementsSorted( UIList* Sender );
		void OnSubmitSelection( UIList* Sender, Int PlayerIndex );
	};

	class UIComp_ListComponentBase: public UIComponent
	{
		DECLARE_PACKAGE_CLASS( UIComp_ListComponentBase, UIComponent, Engine )

	public:
	};

	struct UIListElementCellTemplate
	{
		Name CellDataField; //offset = 140, size = 8
		String ColumnHeaderText; //offset = 148, size = 12
		UIScreenValue_Extent CellSize; //offset = 160, size = 8
		Float CellPosition; //offset = 168, size = 4
	};

	struct UIElementCellSchema
	{
		Array<UIListElementCellTemplate> Cells; //offset = 0, size = 12
	};

	struct UIListItemDataBinding
	{
		DataSourceProvider DataSourceProvider; //offset = 0, size = 8
		Name DataSourceTag; //offset = 8, size = 8
		Int DataSourceIndex; //offset = 16, size = 4
	};

	struct UIListElementCell
	{
		Int ContainerElementIndex; //offset = 0, size = 4
		UIList* OwnerList; //offset = 4, size = 4
		UIListString* ValueString; //offset = 8, size = 4
		UIStyleReference CellStyle[4]; //offset = 12, size = 32
	};

	struct UIListItem
	{
		UIListItemDataBinding DataSource; //offset = 0, size = 20
		Array<UIListElementCell> Cells; //offset = 20, size = 12
		Byte ElementState; //offset = 32, size = 1
	};

	class UIComp_ListPresenter: public UIComp_ListComponentBase
	{
		DECLARE_PACKAGE_CLASS( UIComp_ListPresenter, UIComp_ListComponentBase, Engine )

	public:

		Pointer VfTable_ICustomPropertyItemHandler; //offset = 72, size = 4
		UIElementCellSchema ElementSchema; //offset = 76, size = 12
		Array<UIListItem> ListItems; //offset = 88, size = 12
		UITexture* ColumnHeaderBackground[3]; //offset = 100, size = 4
		UITexture* ListItemOverlay[4]; //offset = 112, size = 4
		TextureCoordinates ColumnHeaderBackgroundCoordinates[3]; //offset = 128, size = 16
		TextureCoordinates ListItemOverlayCoordinates[4]; //offset = 176, size = 16
		Bool bDisplayColumnHeaders: 1; //offset = 240, size = 4
		Bool bReapplyFormatting: 1; //offset = 240, size = 4

		Int FindElementIndex( Int DataSourceIndex );
		ReturnValue GetCellSchemaProvider();
		Bool ShouldAdjustListBounds( Byte Orientation );
		Bool ShouldRenderColumnHeaders();
		void EnableColumnHeaderRendering( Bool bShouldRenderColHeaders );
	};

	class UIComp_ListPresenterCascade: public UIComp_ListPresenter
	{
		DECLARE_PACKAGE_CLASS( UIComp_ListPresenterCascade, UIComp_ListPresenter, Engine )

	public:
	};

	enum EContextMenuItemType
	{
		CMIT_Normal,
		CMIT_Submenu,
		CMIT_Separator,
	};

	struct ContextMenuItem
	{
		UIContextMenu* OwnerMenu; //offset = 0, size = 4
		Pointer ParentItem; //offset = 4, size = 4
		Byte ItemType; //offset = 8, size = 1
		String ItemText; //offset = 12, size = 12
		Int ItemId; //offset = 24, size = 4
	};

	class UIContextMenu: public UIList
	{
		DECLARE_PACKAGE_CLASS( UIContextMenu, UIList, Engine )

	public:

		UIObject* InvokingWidget; //offset = 1644, size = 4
		Array<ContextMenuItem> MenuItems; //offset = 1648, size = 12
		Bool bResolvePosition: 1; //offset = 1660, size = 4

		Int FindMenuItemIndex( UIObject* Widget, String ItemToFind, Int Result, UIScene* SceneOwner, SceneDataStore* SceneDS, Name WidgetDSTag );
		Bool GetMenuItem( UIObject* Widget, Int IndexToGet, String out_MenuItem, Bool bResult, UIScene* SceneOwner, SceneDataStore* SceneDS, Name WidgetDSTag );
		Bool GetAllMenuItems( UIObject* Widget, Array<String> out_MenuItems, Bool bResult, UIScene* SceneOwner, SceneDataStore* SceneDS, Name WidgetDSTag );
		Bool RemoveMenuItemAtIndex( UIObject* Widget, Int IndexToRemove, Bool bResult, UIScene* SceneOwner, SceneDataStore* SceneDS, Name WidgetDSTag );
		Bool RemoveMenuItem( UIObject* Widget, String ItemToRemove, Bool bResult, UIScene* SceneOwner, SceneDataStore* SceneDS, Name WidgetDSTag );
		Bool ClearMenuItems( UIObject* Widget, Bool bResult, UIScene* SceneOwner, SceneDataStore* SceneDS, Name WidgetDSTag );
		Bool InsertMenuItem( UIObject* Widget, String Item, Int InsertIndex, Bool bAllowDuplicates, Bool bResult, UIScene* SceneOwner, SceneDataStore* SceneDS, Name WidgetDSTag );
		Bool SetMenuItems( UIObject* Widget, Array<String> NewMenuItems, Bool bClearExisting, Int InsertIndex, Bool bResult, UIScene* SceneOwner, SceneDataStore* SceneDS, Name WidgetDSTag );
		Bool Close( Int PlayerIndex );
		Bool Open( Int PlayerIndex );
		Bool IsActiveContextMenu();
	};

	class UIComp_ContextMenuListPresenter: public UIComp_ListPresenterCascade
	{
		DECLARE_PACKAGE_CLASS( UIComp_ContextMenuListPresenter, UIComp_ListPresenterCascade, Engine )

	public:
	};

	enum EFadeType
	{
		EFT_None,
		EFT_Fading,
	};

	class UIComp_DrawComponents: public UIComponent
	{
		DECLARE_PACKAGE_CLASS( UIComp_DrawComponents, UIComponent, Engine )

	public:

		Byte FadeType; //offset = 72, size = 1
		Float FadeAlpha; //offset = 76, size = 4
		Float FadeTarget; //offset = 80, size = 4
		Float FadeTime; //offset = 84, size = 4
		Float LastRenderTime; //offset = 88, size = 4
		Float FadeRate; //offset = 92, size = 4
		__OnFadeComplete__Delegate __OnFadeComplete__Delegate; //offset = 96, size = 12

		void OnFadeComplete( UIComp_DrawComponents* Sender );
		void ResetFade();
		void Pulse( Float MaxAlpha, Float MinAlpha, Float PulseRate );
		void Fade( Float FromAlpha, Float ToAlpha, Float TargetFadeTime );
	};

	class UIComp_DrawString: public UIComp_DrawComponents
	{
		DECLARE_PACKAGE_CLASS( UIComp_DrawString, UIComp_DrawComponents, Engine )

	public:

		Pointer VfTable_IUIStyleResolver; //offset = 108, size = 4
		SubscriberOwner SubscriberOwner; //offset = 112, size = 8
		Name StyleResolverTag; //offset = 120, size = 8
		UIString* ValueString; //offset = 128, size = 4
		Class* StringClass; //offset = 132, size = 4
		AutoSizeData AutoSizeParameters[2]; //offset = 136, size = 28
		UIRenderingSubregion ClampRegion[2]; //offset = 192, size = 24
		UITextStyleOverride TextStyleCustomization; //offset = 240, size = 72
		UIStyleReference StringStyle; //offset = 312, size = 32
		Bool bIgnoreMarkup: 1; //offset = 344, size = 4
		Bool bRefreshString: 1; //offset = 344, size = 4
		Bool bReapplyFormatting: 1; //offset = 344, size = 4

		void SetAutoSizePadding( Byte Orientation, Float NearValue, Float FarValue, Byte NearScaleType, Byte FarScaleType, Bool bNeedsReformatting );
		void EnableAutoSizing( Byte Orientation, Bool bShouldEnable, Bool bNeedsReformatting );
		Bool IsAutoSizeEnabled( Byte Orientation );
		void SetAutoSizeExtent( Byte Orientation, Float MinValue, Float MaxValue, Byte MinScaleType, Byte MaxScaleType );
		Bool NotifyResolveStyle( UISkin* ActiveSkin, Bool bClearExistingValue, UIState* CurrentMenuState, Name StylePropertyName );
		Bool SetStyleResolverTag( Name NewResolverTag );
		Name GetStyleResolverTag();
		Bool GetFinalStringStyle( UICombinedStyleData FinalStyleData );
		UIStyle_Combo* GetAppliedStringStyle( UIState* DesiredMenuState );
		Byte GetWrapMode();
		void DisableCustomSpacingAdjust();
		void DisableCustomScale();
		void DisableCustomAutoScaling();
		void DisableCustomClipAlignment();
		void DisableCustomClipMode();
		void DisableCustomAlignment();
		void DisableCustomAttributes();
		void DisableCustomFont();
		void DisableCustomPadding();
		void DisableCustomOpacity();
		void DisableCustomColor();
		void SetSpacingAdjust( Byte Orientation, Float NewSpacingAdjust );
		void SetScale( Byte Orientation, Float NewScale );
		void SetAutoScaling( Byte NewAutoScaleMode, Float NewMinScaleValue );
		void SetClipAlignment( Byte NewClipAlignment );
		void SetWrapMode( Byte NewClipMode );
		void SetAlignment( Byte Orientation, Byte NewAlignment );
		void SetAttributes( UITextAttributes NewAttributes );
		void SetFont( Font* NewFont );
		void SetPadding( Float HorizontalPadding, Float VerticalPadding );
		void SetOpacity( Float NewOpacity );
		void SetColor( LinearColor NewColor );
		void SetSubregionAlignment( Byte Orientation, Byte NewValue );
		void SetSubregionOffset( Byte Orientation, Float NewValue, Byte EvalType );
		void SetSubregionSize( Byte Orientation, Float NewValue, Byte EvalType );
		void EnableSubregion( Byte Orientation, Bool bShouldEnable );
		Byte GetSubregionAlignment( Byte Orientation );
		Float GetSubregionOffset( Byte Orientation, Byte OutputType );
		Float GetSubregionSize( Byte Orientation, Byte OutputType );
		Bool IsSubregionEnabled( Byte Orientation );
		void RefreshValue();
		String GetValue( Bool bReturnProcessedText );
		void SetValue( String NewText );
	};

	class UIComp_DrawCaption: public UIComp_DrawString
	{
		DECLARE_PACKAGE_CLASS( UIComp_DrawCaption, UIComp_DrawString, Engine )

	public:
	};

	class UIComp_DrawImage: public UIComp_DrawComponents
	{
		DECLARE_PACKAGE_CLASS( UIComp_DrawImage, UIComp_DrawComponents, Engine )

	public:

		Pointer VfTable_IUIStyleResolver; //offset = 108, size = 4
		Pointer VfTable_ICustomPropertyItemHandler; //offset = 112, size = 4
		Name StyleResolverTag; //offset = 116, size = 8
		UITexture* ImageRef; //offset = 124, size = 4
		UIImageStyleOverride StyleCustomization; //offset = 128, size = 84
		UIStyleReference ImageStyle; //offset = 212, size = 32

		Bool NotifyResolveStyle( UISkin* ActiveSkin, Bool bClearExistingValue, UIState* CurrentMenuState, Name StylePropertyName );
		Bool SetStyleResolverTag( Name NewResolverTag );
		Name GetStyleResolverTag();
		Surface* GetImage();
		void DisableCustomFormatting();
		void DisableCustomPadding();
		void DisableCustomOpacity();
		void DisableCustomColor();
		void DisableCustomCoordinates();
		void SetFormatting( Byte Orientation, UIImageAdjustmentData NewFormattingData );
		void SetPadding( Float HorizontalPadding, Float VerticalPadding );
		void SetOpacity( Float NewOpacity );
		void SetColor( LinearColor NewColor );
		void SetCoordinates( TextureCoordinates NewCoordinates );
		void SetImage( Surface* NewImage );
		UIStyle_Image* GetAppliedImageStyle( UIState* DesiredMenuState );
	};

	struct UIStringSelectionRegion
	{
		Int SelectionStartCharIndex; //offset = 0, size = 4
		Int SelectionEndCharIndex; //offset = 4, size = 4
	};

	class UIComp_DrawStringEditbox: public UIComp_DrawString
	{
		DECLARE_PACKAGE_CLASS( UIComp_DrawStringEditbox, UIComp_DrawString, Engine )

	public:

		String UserText; //offset = 348, size = 12
		UIStringCaretParameters StringCaret; //offset = 360, size = 28
		UIStringSelectionRegion SelectionRegion; //offset = 388, size = 8
		LinearColor SelectionTextColor; //offset = 396, size = 16
		LinearColor SelectionBackgroundColor; //offset = 412, size = 16
		Pointer CaretNode; //offset = 428, size = 4
		Int FirstCharacterPosition; //offset = 432, size = 4
		Bool bRecalculateFirstCharacter: 1; //offset = 436, size = 4
		Float CaretOffset; //offset = 440, size = 4

		String GetSelectedText();
		Bool GetSelectionRange( Int out_StartIndex, Int out_EndIndex );
		Bool ClearSelection();
		Bool SetSelectionEnd( Int EndIndex );
		Bool SetSelectionStart( Int StartIndex );
		Bool SetSelectionRange( Int StartIndex, Int EndIndex );
		Int GetUserTextLength();
		Bool SetUserText( String NewValue );
	};

	enum EEditBoxCharacterSet
	{
		CHARSET_All,
		CHARSET_NoSpecial,
		CHARSET_AlphaOnly,
	};

	class UIEditBox: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIEditBox, UIObject, Engine )

	public:

		Pointer VfTable_IUIDataStorePublisher; //offset = 988, size = 4
		UIDataStoreBinding DataSource; //offset = 992, size = 48
		UIComp_DrawStringEditbox* StringRenderComponent; //offset = 1040, size = 4
		UIComp_DrawImage* BackgroundImageComponent; //offset = 1044, size = 4
		String InitialValue; //offset = 1048, size = 12
		Bool bReadOnly: 1; //offset = 1060, size = 4
		Bool bPasswordMode: 1; //offset = 1060, size = 4
		Int MaxCharacters; //offset = 1064, size = 4
		Byte CharacterSet; //offset = 1068, size = 1
		__OnSubmitText__Delegate __OnSubmitText__Delegate; //offset = 1072, size = 12

		void OnGetTextValue( UIAction_GetTextValue* Action );
		void OnSetLabelText( UIAction_SetLabelText* Action );
		void IgnoreMarkup( Bool bShouldIgnoreMarkup );
		void SetReadOnly( Bool bShouldBeReadOnly );
		Bool IsReadOnly();
		void Initialized();
		Bool SaveSubscriberValue( Array<UIDataStore*> out_BoundDataStores, Int BindingIndex );
		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
		Int CalculateCaretPositionFromCursorLocation( Int PlayerIndex );
		String GetValue( Bool bReturnUserText );
		void SetValue( String NewText, Int PlayerIndex, Bool bSkipNotification );
		void SetBackgroundImage( Surface* NewImage );
		Bool OnSubmitText( UIEditBox* Sender, Int PlayerIndex );
	};

	class UIComp_DrawStringSlider: public UIComp_DrawString
	{
		DECLARE_PACKAGE_CLASS( UIComp_DrawStringSlider, UIComp_DrawString, Engine )

	public:
	};

	struct UIListSortingParameters
	{
		Int PrimaryIndex; //offset = 0, size = 4
		Int SecondaryIndex; //offset = 4, size = 4
		Bool bReversePrimarySorting: 1; //offset = 8, size = 4
		Bool bReverseSecondarySorting: 1; //offset = 8, size = 4
		Bool bCaseSensitive: 1; //offset = 8, size = 4
		Bool bIntSortPrimary: 1; //offset = 8, size = 4
		Bool bIntSortSecondary: 1; //offset = 8, size = 4
		Bool bFloatSortPrimary: 1; //offset = 8, size = 4
		Bool bFloatSortSecondary: 1; //offset = 8, size = 4
	};

	class UIComp_ListElementSorter: public UIComp_ListComponentBase
	{
		DECLARE_PACKAGE_CLASS( UIComp_ListElementSorter, UIComp_ListComponentBase, Engine )

	public:

		Bool bAllowCompoundSorting: 1; //offset = 72, size = 4
		Int InitialSortColumn; //offset = 76, size = 4
		Int InitialSecondarySortColumn; //offset = 80, size = 4
		Int PrimarySortColumn; //offset = 84, size = 4
		Int SecondarySortColumn; //offset = 88, size = 4
		Bool bReversePrimarySorting: 1; //offset = 92, size = 4
		Bool bReverseSecondarySorting: 1; //offset = 92, size = 4

		Bool ResortItems( Bool bCaseSensitive );
		Bool SortItems( Int ColumnIndex, Bool bSecondarySort, Bool bCaseSensitive );
		void ResetSortColumns( Bool bResort );
	};

	class UIComp_ListPresenterTree: public UIComp_ListPresenter
	{
		DECLARE_PACKAGE_CLASS( UIComp_ListPresenterTree, UIComp_ListPresenter, Engine )

	public:
	};

	class UIConfigProvider: public UIDataProvider
	{
		DECLARE_PACKAGE_CLASS( UIConfigProvider, UIDataProvider, Engine )

	public:
	};

	class UIConfigSectionProvider: public UIConfigProvider
	{
		DECLARE_PACKAGE_CLASS( UIConfigSectionProvider, UIConfigProvider, Engine )

	public:

		String SectionName; //offset = 88, size = 12
	};

	class UIConfigFileProvider: public UIConfigProvider
	{
		DECLARE_PACKAGE_CLASS( UIConfigFileProvider, UIConfigProvider, Engine )

	public:

		Array<UIConfigSectionProvider*> Sections; //offset = 88, size = 12
		String ConfigFileName; //offset = 100, size = 12
	};

	class UIContainer: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIContainer, UIObject, Engine )

	public:

		UIComp_AutoAlignment* AutoAlignment; //offset = 988, size = 4
	};

	class UICustomSkin: public UISkin
	{
		DECLARE_PACKAGE_CLASS( UICustomSkin, UISkin, Engine )

	public:

		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> WidgetStyleMap; //offset = 256, size = 20
	};

	class UIDataProvider_OnlinePlayerDataBase: public UIDataProvider
	{
		DECLARE_PACKAGE_CLASS( UIDataProvider_OnlinePlayerDataBase, UIDataProvider, Engine )

	public:

		LocalPlayer* Player; //offset = 88, size = 4

		void OnUnregister();
		void OnRegister( LocalPlayer* InPlayer );
	};

	class UIDataProvider_OnlineClanMates: public UIDataProvider_OnlinePlayerDataBase
	{
		DECLARE_PACKAGE_CLASS( UIDataProvider_OnlineClanMates, UIDataProvider_OnlinePlayerDataBase, Engine )

	public:

		Pointer VfTable_IUIListElementCellProvider; //offset = 92, size = 4

		void OnClanMatesReadComplete( OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnRegister( LocalPlayer* InPlayer, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
	};

	class UIDataProvider_OnlineFriendMessages: public UIDataProvider_OnlinePlayerDataBase
	{
		DECLARE_PACKAGE_CLASS( UIDataProvider_OnlineFriendMessages, UIDataProvider_OnlinePlayerDataBase, Engine )

	public:

		Pointer VfTable_IUIListElementCellProvider; //offset = 92, size = 4
		Array<OnlineFriendMessage> Messages; //offset = 96, size = 12
		String SendingPlayerNameCol; //offset = 108, size = 12
		String bIsFriendInviteCol; //offset = 120, size = 12
		String bWasAcceptedCol; //offset = 132, size = 12
		String bWasDeniedCol; //offset = 144, size = 12
		String MessageCol; //offset = 156, size = 12
		String LastInviteFrom; //offset = 168, size = 12

		void OnGameInviteReceived( Byte LocalUserNum, String InviterName );
		void OnLoginChange();
		void OnFriendMessageReceived( Byte LocalUserNum, UniqueNetId SendingPlayer, String SendingNick, String Message );
		void OnFriendInviteReceived( Byte LocalUserNum, UniqueNetId RequestingPlayer, String RequestingNick, String Message );
		void ReadMessages( OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnUnregister( OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnRegister( LocalPlayer* InPlayer, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
	};

	class UIDataProvider_OnlineFriends: public UIDataProvider_OnlinePlayerDataBase
	{
		DECLARE_PACKAGE_CLASS( UIDataProvider_OnlineFriends, UIDataProvider_OnlinePlayerDataBase, Engine )

	public:

		Pointer VfTable_IUIListElementCellProvider; //offset = 92, size = 4
		Array<OnlineFriend> FriendsList; //offset = 96, size = 12
		String NickNameCol; //offset = 108, size = 12
		String PresenceInfoCol; //offset = 120, size = 12
		String bIsOnlineCol; //offset = 132, size = 12
		String bIsPlayingCol; //offset = 144, size = 12
		String bIsPlayingThisGameCol; //offset = 156, size = 12
		String bIsJoinableCol; //offset = 168, size = 12
		String bHasVoiceSupportCol; //offset = 180, size = 12

		void RefreshFriendsList( OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnLoginChange( OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnFriendsReadComplete( Bool bWasSuccessful, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnUnregister( OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnRegister( LocalPlayer* InPlayer, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
	};

	class UIDataProvider_OnlinePlayers: public UIDataProvider_OnlinePlayerDataBase
	{
		DECLARE_PACKAGE_CLASS( UIDataProvider_OnlinePlayers, UIDataProvider_OnlinePlayerDataBase, Engine )

	public:

		Pointer VfTable_IUIListElementCellProvider; //offset = 92, size = 4

		void OnPlayersReadComplete( OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnRegister( LocalPlayer* InPlayer, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
	};

	class UIDataProvider_OnlineProfileSettingsArray: public UIDataProvider
	{
		DECLARE_PACKAGE_CLASS( UIDataProvider_OnlineProfileSettingsArray, UIDataProvider, Engine )

	public:

		Pointer VfTable_IUIListElementProvider; //offset = 88, size = 4
		Pointer VfTable_IUIListElementCellProvider; //offset = 92, size = 4
		OnlineProfileSettings* ProfileSettings; //offset = 96, size = 4
		Int ProfileSettingId; //offset = 100, size = 4
		Name ProfileSettingsName; //offset = 104, size = 8
		String ColumnHeaderText; //offset = 112, size = 12
		Array<Name> Values; //offset = 124, size = 12
	};

	struct ProfileSettingsArrayProvider
	{
		Int ProfileSettingsId; //offset = 0, size = 4
		Name ProfileSettingsName; //offset = 4, size = 8
		UIDataProvider_OnlineProfileSettingsArray* Provider; //offset = 12, size = 4
	};

	class UIDataProvider_OnlineProfileSettings: public UIDataProvider_OnlinePlayerDataBase
	{
		DECLARE_PACKAGE_CLASS( UIDataProvider_OnlineProfileSettings, UIDataProvider_OnlinePlayerDataBase, Engine )

	public:

		OnlineProfileSettings* Profile; //offset = 92, size = 4
		Name ProviderName; //offset = 96, size = 8
		Bool bWasErrorLastRead: 1; //offset = 104, size = 4
		Array<ProfileSettingsArrayProvider> ProfileSettingsArrayProviders; //offset = 108, size = 12

		Bool SaveProfileData(, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnLoginChange( OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnReadProfileComplete( Byte LocalUserNum, Bool bWasSuccessful, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnUnregister( OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnRegister( LocalPlayer* InPlayer, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
	};

	class UIDataProvider_SettingsArray: public UIDataProvider
	{
		DECLARE_PACKAGE_CLASS( UIDataProvider_SettingsArray, UIDataProvider, Engine )

	public:

		Pointer VfTable_IUIListElementProvider; //offset = 88, size = 4
		Pointer VfTable_IUIListElementCellProvider; //offset = 92, size = 4
		Settings* Settings; //offset = 96, size = 4
		Int SettingsId; //offset = 100, size = 4
		Name SettingsName; //offset = 104, size = 8
		String ColumnHeaderText; //offset = 112, size = 12
		Array<IdToStringMapping> Values; //offset = 124, size = 12
	};

	struct SettingsArrayProvider
	{
		Int SettingsId; //offset = 0, size = 4
		Name SettingsName; //offset = 4, size = 8
		UIDataProvider_SettingsArray* Provider; //offset = 12, size = 4
	};

	class UIDataProvider_Settings: public UIDynamicDataProvider
	{
		DECLARE_PACKAGE_CLASS( UIDataProvider_Settings, UIDynamicDataProvider, Engine )

	public:

		Settings* Settings; //offset = 108, size = 4
		Array<SettingsArrayProvider> SettingsArrayProviders; //offset = 112, size = 12
		Bool bIsAListRow: 1; //offset = 124, size = 4
	};

	class UIDataStore_Color: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_Color, UIDataStore, Engine )

	public:
	};

	class UIDataStore_Fonts: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_Fonts, UIDataStore, Engine )

	public:
	};

	struct GameResourceDataProvider
	{
		Name ProviderTag; //offset = 0, size = 8
		String ProviderClassName; //offset = 8, size = 12
		Class* ProviderClass; //offset = 20, size = 4
	};

	class UIDataStore_GameResource: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_GameResource, UIDataStore, Engine )

	public:

		Pointer VfTable_IUIListElementProvider; //offset = 120, size = 4
		Array<GameResourceDataProvider> ElementProviderTypes; //offset = 124, size = 12
		MultiMap_Mirror ListElementProviders; //offset = 136, size = 20
	};

	class UIDataStore_Gamma: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_Gamma, UIDataStore, Engine )

	public:
	};

	class UIDataStore_Images: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_Images, UIDataStore, Engine )

	public:
	};

	class UIDataStore_Remote: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_Remote, UIDataStore, Engine )

	public:
	};

	struct GameSearchCfg
	{
		Class* GameSearchClass; //offset = 0, size = 4
		Class* DefaultGameSettingsClass; //offset = 4, size = 4
		Class* SearchResultsProviderClass; //offset = 8, size = 4
		UIDataProvider_Settings* DesiredSettingsProvider; //offset = 12, size = 4
		Array<UIDataProvider_Settings*> SearchResults; //offset = 16, size = 12
		OnlineGameSearch* Search; //offset = 28, size = 4
		Name SearchName; //offset = 32, size = 8
	};

	class UIDataStore_OnlineGameSearch: public UIDataStore_Remote
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_OnlineGameSearch, UIDataStore_Remote, Engine )

	public:

		Pointer VfTable_IUIListElementProvider; //offset = 120, size = 4
		Pointer VfTable_IUIListElementCellProvider; //offset = 124, size = 4
		Name SearchResultsName; //offset = 128, size = 8
		OnlineSubsystem* OnlineSub; //offset = 136, size = 4
		GameInterface GameInterface; //offset = 140, size = 8
		Array<GameSearchCfg> GameSearchCfgList; //offset = 148, size = 12
		Int SelectedIndex; //offset = 160, size = 4
		Int ActiveSearchIndex; //offset = 164, size = 4

		void ClearAllSearchResults( Int OriginalActiveIndex, Int GameTypeIndex );
		void MoveToPrevious( Bool bInvalidateExistingSearchResults );
		void MoveToNext( Bool bInvalidateExistingSearchResults );
		void SetCurrentByName( Name SearchName, Bool bInvalidateExistingSearchResults, Int Index );
		void SetCurrentByIndex( Int NewIndex, Bool bInvalidateExistingSearchResults );
		Int FindSearchConfigurationIndex( Name SearchTag, Int Index );
		OnlineGameSearch* GetActiveGameSearch();
		OnlineGameSearch* GetCurrentGameSearch();
		void BuildSearchResults();
		Bool ShowHostGamercard( Byte ControllerIndex, Int ListIndex, PlayerExt PlayerExt, OnlineGameSettings* Game );
		Bool GetSearchResultFromIndex( Int ListIndex, OnlineGameSearchResult Result );
		void OnSearchComplete( Bool bWasSuccessful );
		Bool SubmitGameSearch( Byte ControllerIndex, Bool bInvalidateExistingSearchResults );
		Bool InvalidateCurrentSearchResults(, OnlineGameSearch* ActiveSearch, Bool bResult );
		void Init();
	};

	struct GameSettingsCfg
	{
		Class* GameSettingsClass; //offset = 0, size = 4
		UIDataProvider_Settings* Provider; //offset = 4, size = 4
		OnlineGameSettings* GameSettings; //offset = 8, size = 4
		Name SettingsName; //offset = 12, size = 8
	};

	class UIDataStore_OnlineGameSettings: public UIDataStore_Settings
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_OnlineGameSettings, UIDataStore_Settings, Engine )

	public:

		Array<GameSettingsCfg> GameSettingsCfgList; //offset = 120, size = 12
		Int SelectedIndex; //offset = 132, size = 4

		void MoveToPrevious();
		void MoveToNext();
		void SetCurrentByName( Name SettingsName, Int Index );
		void SetCurrentByIndex( Int NewIndex );
		UIDataProvider_Settings* GetCurrentProvider();
		OnlineGameSettings* GetCurrentGameSettings();
		Bool CreateGame( Byte ControllerIndex, OnlineSubsystem* OnlineSub, GameInterface GameInterface );
	};

	class UIDataStore_OnlinePlayerData: public UIDataStore_Remote
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_OnlinePlayerData, UIDataStore_Remote, Engine )

	public:

		Pointer VfTable_IUIListElementProvider; //offset = 120, size = 4
		UIDataProvider_OnlineFriends* FriendsProvider; //offset = 124, size = 4
		UIDataProvider_OnlinePlayers* PlayersProvider; //offset = 128, size = 4
		UIDataProvider_OnlineClanMates* ClanMatesProvider; //offset = 132, size = 4
		LocalPlayer* Player; //offset = 136, size = 4
		String PlayerNick; //offset = 140, size = 12
		Int NumNewDownloads; //offset = 152, size = 4
		Int NumTotalDownloads; //offset = 156, size = 4
		String ProfileSettingsClassName; //offset = 160, size = 12
		Class* ProfileSettingsClass; //offset = 172, size = 4
		UIDataProvider_OnlineProfileSettings* ProfileProvider; //offset = 176, size = 4
		UIDataProvider_OnlineFriendMessages* FriendMessagesProvider; //offset = 180, size = 4
		String FriendsProviderClassName; //offset = 184, size = 12
		Class* FriendsProviderClass; //offset = 196, size = 4
		String PlayersProviderClassName; //offset = 200, size = 12
		Class* PlayersProviderClass; //offset = 212, size = 4
		String ClanMatesProviderClassName; //offset = 216, size = 12
		Class* ClanMatesProviderClass; //offset = 228, size = 4
		String FriendMessagesProviderClassName; //offset = 232, size = 12
		Class* FriendMessagesProviderClass; //offset = 244, size = 4

		OnlineProfileSettings* GetCachedPlayerProfile( Int ControllerId, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface, OnlineProfileSettings* Result );
		Bool SaveProfileData();
		void OnDownloadableContentQueryDone( Bool bWasSuccessful, OnlineSubsystem* OnlineSub );
		void OnProviderChanged( UIDataProvider* SourceProvider, Name PropTag );
		void RegisterDelegates();
		void OnPlayerDataChange( OnlineSubsystem* OnlineSub );
		void OnLoginChange( OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnUnregister( OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
		void OnRegister( LocalPlayer* InPlayer, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
	};

	enum EStatsFetchType
	{
		SFT_Player,
		SFT_CenteredOnPlayer,
		SFT_Friends,
	};

	struct RankMetaData
	{
		Name RankName; //offset = 0, size = 8
		String RankColumnName; //offset = 8, size = 12
	};

	struct PlayerNickMetaData
	{
		Name PlayerNickName; //offset = 0, size = 8
		String PlayerNickColumnName; //offset = 8, size = 12
	};

	class UIDataStore_OnlineStats: public UIDataStore_Remote
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_OnlineStats, UIDataStore_Remote, Engine )

	public:

		Pointer VfTable_IUIListElementProvider; //offset = 120, size = 4
		Pointer VfTable_IUIListElementCellProvider; //offset = 124, size = 4
		Array<Class*> StatsReadClasses; //offset = 128, size = 12
		Name StatsReadName; //offset = 140, size = 8
		PlayerNickMetaData PlayerNickData; //offset = 148, size = 20
		RankMetaData RankNameMetaData; //offset = 168, size = 20
		Name TotalRowsName; //offset = 188, size = 8
		Array<OnlineStatsRead*> StatsReadObjects; //offset = 196, size = 12
		OnlineStatsRead* StatsRead; //offset = 208, size = 4
		Byte CurrentReadType; //offset = 212, size = 1
		StatsInterface StatsInterface; //offset = 216, size = 8
		PlayerInterface PlayerInterface; //offset = 224, size = 8

		void SortResultsByRank();
		void OnReadComplete( Bool bWasSuccessful );
		Bool ShowGamercard( Byte ConrollerIndex, Int ListIndex, OnlineSubsystem* OnlineSub, PlayerExt PlayerExt, UniqueNetId PlayerID );
		Bool RefreshStats( Byte ControllerIndex, Array<UniqueNetId> Players, UniqueNetId PlayerID );
		void SetStatsReadInfo();
		void Init( OnlineSubsystem* OnlineSub );
	};

	class UIDataStore_Registry: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_Registry, UIDataStore, Engine )

	public:

		UIDynamicFieldProvider* RegistryDataProvider; //offset = 120, size = 4

		UIDynamicFieldProvider* GetDataProvider();
	};

	struct UIMenuInputMap
	{
		Name FieldName; //offset = 0, size = 8
		Name Set; //offset = 8, size = 8
		String MappedText; //offset = 16, size = 12
	};

	class UIDataStore_StringAliasMap: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_StringAliasMap, UIDataStore, Engine )

	public:

		Array<UIMenuInputMap> MenuInputMapArray; //offset = 120, size = 12
		Map_Mirror MenuInputSets; //offset = 132, size = 20
		Int PlayerIndex; //offset = 152, size = 4

		Int GetStringWithFieldName( String FieldName, String MappedString );
		Int FindMappingWithFieldName( String FieldName, String SetName );
		LocalPlayer* GetPlayerOwner();
	};

	class UIDataStore_Strings: public UIDataStore
	{
		DECLARE_PACKAGE_CLASS( UIDataStore_Strings, UIDataStore, Engine )

	public:

		Array<UIConfigFileProvider*> LocFileProviders; //offset = 120, size = 12
	};

	class UIDataStoreSubscriber: public Interface
	{
		DECLARE_PACKAGE_CLASS( UIDataStoreSubscriber, Interface, Engine )

	public:

		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
	};

	class UIDataStorePublisher: public UIDataStoreSubscriber
	{
		DECLARE_PACKAGE_CLASS( UIDataStorePublisher, UIDataStoreSubscriber, Engine )

	public:

		Bool SaveSubscriberValue( Array<UIDataStore*> out_BoundDataStores, Int BindingIndex );
	};

	class UIEditboxString: public UIString
	{
		DECLARE_PACKAGE_CLASS( UIEditboxString, UIString, Engine )

	public:
	};

	enum EFrameBoxImage
	{
		FBI_TopLeft,
		FBI_Top,
		FBI_TopRight,
		FBI_CenterLeft,
		FBI_Center,
	};

	struct CornerSizes
	{
		Float TopLeft[2]; //offset = 0, size = 4
		Float TopRight[2]; //offset = 8, size = 4
		Float BottomLeft[2]; //offset = 16, size = 4
		Float BottomRight[2]; //offset = 24, size = 4
		Float TopHeight; //offset = 32, size = 4
		Float BottomHeight; //offset = 36, size = 4
		Float CenterLeftWidth; //offset = 40, size = 4
		Float CenterRightWidth; //offset = 44, size = 4
	};

	class UIFrameBox: public UIContainer
	{
		DECLARE_PACKAGE_CLASS( UIFrameBox, UIContainer, Engine )

	public:

		UIComp_DrawImage* BackgroundImageComponent[9]; //offset = 992, size = 4
		CornerSizes BackgroundCornerSizes; //offset = 1028, size = 48

		void SetBackgroundImage( Byte ImageToSet, Surface* NewImage );
	};

	class UIImage: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIImage, UIObject, Engine )

	public:

		Pointer VfTable_IUIDataStorePublisher; //offset = 988, size = 4
		UIDataStoreBinding ImageDataSource; //offset = 992, size = 48
		UIComp_DrawImage* ImageComponent; //offset = 1040, size = 4

		Bool SaveSubscriberValue( Array<UIDataStore*> out_BoundDataStores, Int BindingIndex );
		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
		void SetValue( Surface* NewImage );
	};

	class UILabel: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UILabel, UIObject, Engine )

	public:

		Pointer VfTable_IUIDataStoreSubscriber; //offset = 988, size = 4
		Pointer VfTable_IUIStringRenderer; //offset = 992, size = 4
		UIDataStoreBinding DataSource; //offset = 996, size = 48
		UIComp_DrawString* StringRenderComponent; //offset = 1044, size = 4
		UIComp_DrawImage* LabelBackground; //offset = 1048, size = 4

		void OnGetTextValue( UIAction_GetTextValue* Action );
		void OnSetLabelText( UIAction_SetLabelText* Action );
		void IgnoreMarkup( Bool bShouldIgnoreMarkup );
		String GetValue();
		void SetArrayValue( Array<String> ValueArray, String Str );
		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
		void SetTextAlignment( Byte Horizontal, Byte Vertical );
		void SetValue( String NewText );
	};

	class UILabelButton: public UIButton
	{
		DECLARE_PACKAGE_CLASS( UILabelButton, UIButton, Engine )

	public:

		Pointer VfTable_IUIDataStorePublisher; //offset = 1000, size = 4
		UIDataStoreBinding CaptionDataSource; //offset = 1004, size = 48
		UIComp_DrawString* StringRenderComponent; //offset = 1052, size = 4

		Bool SaveSubscriberValue( Array<UIDataStore*> out_BoundDataStores, Int BindingIndex );
		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
		void SetTextAlignment( Byte Horizontal, Byte Vertical );
		void OnGetTextValue( UIAction_GetTextValue* Action );
		void OnSetLabelText( UIAction_SetLabelText* Action );
		String GetCaption();
		void SetCaption( String NewText );
	};

	const char* UnknownCellDataFieldName = 'NAME_;

	class UIListElementCellProvider: public Interface
	{
		DECLARE_PACKAGE_CLASS( UIListElementCellProvider, Interface, Engine )

	public:
	};

	class UIListElementProvider: public Interface
	{
		DECLARE_PACKAGE_CLASS( UIListElementProvider, Interface, Engine )

	public:
	};

	class UIListString: public UIString
	{
		DECLARE_PACKAGE_CLASS( UIListString, UIString, Engine )

	public:
	};

	class UIMeshWidget: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIMeshWidget, UIObject, Engine )

	public:

		StaticMeshComponent* Mesh; //offset = 988, size = 4
	};

	class UINumericEditBoxButton: public UIButton
	{
		DECLARE_PACKAGE_CLASS( UINumericEditBoxButton, UIButton, Engine )

	public:
	};

	class UINumericEditBox: public UIEditBox
	{
		DECLARE_PACKAGE_CLASS( UINumericEditBox, UIEditBox, Engine )

	public:

		UIStyleReference IncrementStyle; //offset = 1084, size = 32
		UIStyleReference DecrementStyle; //offset = 1116, size = 32
		UINumericEditBoxButton* IncrementButton; //offset = 1148, size = 4
		UINumericEditBoxButton* DecrementButton; //offset = 1152, size = 4
		UIRangeData NumericValue; //offset = 1156, size = 20
		Int DecimalPlaces; //offset = 1176, size = 4
		UIScreenValue_Bounds IncButton_Position; //offset = 1180, size = 28
		UIScreenValue_Bounds DecButton_Position; //offset = 1208, size = 28

		Float GetNumericValue();
		Bool SetNumericValue( Float NewValue, Bool bForceRefreshString );
		void PostInitialize();
		void Initialized( Int ModifierFlags );
		void DecrementValue( UIScreenObject* Sender, Int PlayerIndex );
		void IncrementValue( UIScreenObject* Sender, Int PlayerIndex );
	};

	const char* UIKEY_MoveCursorRight = 'UIKEY_MoveC;
	const char* UIKEY_MoveCursorLeft = 'UIKEY_MoveC;

	class UIOptionListBase: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIOptionListBase, UIObject, Engine )

	public:

		Pointer VfTable_IUIDataStorePublisher; //offset = 988, size = 4
		UIStyleReference DecrementStyle; //offset = 992, size = 32
		UIStyleReference IncrementStyle; //offset = 1024, size = 32
		UIOptionListButton* DecrementButton; //offset = 1056, size = 4
		UIOptionListButton* IncrementButton; //offset = 1060, size = 4
		Class* OptionListButtonClass; //offset = 1064, size = 4
		UIScreenValue_Extent ButtonSpacing; //offset = 1068, size = 8
		UIComp_DrawImage* BackgroundImageComponent; //offset = 1076, size = 4
		UIComp_DrawString* StringRenderComponent; //offset = 1080, size = 4
		Name IncrementCue; //offset = 1084, size = 8
		Name DecrementCue; //offset = 1092, size = 8
		Bool bWrapOptions: 1; //offset = 1100, size = 4
		UIDataStoreBinding DataSource; //offset = 1104, size = 48
		__CreateCustomDecrementButton__Delegate __CreateCustomDecrementButton__Delegate; //offset = 1152, size = 12
		__CreateCustomIncrementButton__Delegate __CreateCustomIncrementButton__Delegate; //offset = 1164, size = 12

		Bool OnButtonClicked( UIScreenObject* Sender, Int PlayerIndex );
		void InitializeInternalControls();
		void Initialized();
		void Created( UIObject* CreatedWidget, UIScreenObject* CreatorContainer );
		void OnMoveSelectionRight( Int PlayerIndex );
		void OnMoveSelectionLeft( Int PlayerIndex );
		Bool HasNextValue();
		Bool HasPrevValue();
		Bool SaveSubscriberValue( Array<UIDataStore*> out_BoundDataStores, Int BindingIndex );
		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
		UIOptionListButton* CreateCustomIncrementButton( UIOptionListBase* ButtonOwner );
		UIOptionListButton* CreateCustomDecrementButton( UIOptionListBase* ButtonOwner );
	};

	class UINumericOptionList: public UIOptionListBase
	{
		DECLARE_PACKAGE_CLASS( UINumericOptionList, UIOptionListBase, Engine )

	public:

		UIRangeData RangeValue; //offset = 1176, size = 20

		Float GetValue( Bool bPercentageValue );
		Bool SetValue( Float NewValue, Bool bPercentageValue );
	};

	class UIOptionList: public UIOptionListBase
	{
		DECLARE_PACKAGE_CLASS( UIOptionList, UIOptionListBase, Engine )

	public:

		Int CurrentIndex; //offset = 1176, size = 4
		DataProvider DataProvider; //offset = 1180, size = 8

		void OnSetListIndex( UIAction_SetListIndex* Action, Int OutputLinkIndex );
		void SetCurrentIndex( Int NewIndex );
		Int GetCurrentIndex();
		void SetNextValue();
		void SetPrevValue();
		Bool GetListValue( Int ListIndex, String OutValue );
	};

	class UIOptionListButton: public UIButton
	{
		DECLARE_PACKAGE_CLASS( UIOptionListButton, UIButton, Engine )

	public:

		void UpdateButtonState( Int PlayerIndex );
	};

	class UIPanel: public UIContainer
	{
		DECLARE_PACKAGE_CLASS( UIPanel, UIContainer, Engine )

	public:

		UIComp_DrawImage* BackgroundImageComponent; //offset = 992, size = 4
		Bool bEnforceClipping: 1; //offset = 996, size = 4

		void SetBackgroundImage( Surface* NewImage );
	};

	struct ArchetypeInstancePair
	{
		UIObject* WidgetArchetype; //offset = 0, size = 4
		UIObject* WidgetInstance; //offset = 4, size = 4
		Float ArchetypeBounds[4]; //offset = 8, size = 4
		Float InstanceBounds[4]; //offset = 24, size = 4
	};

	class UIPrefab: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIPrefab, UIObject, Engine )

	public:

		Int PrefabVersion; //offset = 988, size = 4
		Int InternalPrefabVersion; //offset = 992, size = 4
		Texture2D* PrefabPreview; //offset = 996, size = 4
		Int ModificationCounter; //offset = 1000, size = 4
	};

	class UIPrefabInstance: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIPrefabInstance, UIObject, Engine )

	public:

		UIPrefab* SourcePrefab; //offset = 988, size = 4
		Int PrefabInstanceVersion; //offset = 992, size = 4
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> ArchetypeToInstanceMap; //offset = 996, size = 20
		Int PI_PackageVersion; //offset = 1016, size = 4
		Int PI_LicenseePackageVersion; //offset = 1020, size = 4
		Int PI_DataOffset; //offset = 1024, size = 4
		Array<Byte> PI_Bytes; //offset = 1028, size = 12
		Array<Object*> PI_CompleteObjects; //offset = 1040, size = 12
		Array<Object*> PI_ReferencedObjects; //offset = 1052, size = 12
		Array<String> PI_SavedNames; //offset = 1064, size = 12
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> PI_ObjectMap; //offset = 1076, size = 20

		void DetachFromSourcePrefab();
	};

	class UIScene: public UIScreenObject
	{
		DECLARE_PACKAGE_CLASS( UIScene, UIScreenObject, Engine )

	public:

		Name SceneTag; //offset = 352, size = 8
		UISceneClient* SceneClient; //offset = 360, size = 4
		SceneDataStore* SceneData; //offset = 364, size = 4
		LocalPlayer* PlayerOwner; //offset = 368, size = 4
		UIToolTip* ActiveToolTip; //offset = 372, size = 4
		UIToolTip* StandardToolTip; //offset = 376, size = 4
		Class* DefaultToolTipClass; //offset = 380, size = 4
		UIContextMenu* ActiveContextMenu; //offset = 384, size = 4
		UIContextMenu* StandardContextMenu; //offset = 388, size = 4
		Class* DefaultContextMenuClass; //offset = 392, size = 4
		Array<UIDockingNode> DockingStack; //offset = 396, size = 12
		Array<UIObject*> RenderStack; //offset = 408, size = 12
		Map_Mirror InputSubscriptions; //offset = 420, size = 20
		Int LastPlayerIndex; //offset = 440, size = 4
		Bool bUpdateDockingStack: 1; //offset = 444, size = 4
		Bool bUpdateScenePositions: 1; //offset = 444, size = 4
		Bool bUpdateNavigationLinks: 1; //offset = 444, size = 4
		Bool bUpdatePrimitiveUsage: 1; //offset = 444, size = 4
		Bool bRefreshWidgetStyles: 1; //offset = 444, size = 4
		Bool bRefreshStringFormatting: 1; //offset = 444, size = 4
		Bool bIssuedPreRenderCallback: 1; //offset = 444, size = 4
		Bool bResolvingScenePositions: 1; //offset = 444, size = 4
		Bool bUsesPrimitives: 1; //offset = 444, size = 4
		Bool bDisplayCursor: 1; //offset = 444, size = 4
		Bool bRenderParentScenes: 1; //offset = 444, size = 4
		Bool bAlwaysRenderScene: 1; //offset = 444, size = 4
		Bool bPauseGameWhileActive: 1; //offset = 444, size = 4
		Bool bExemptFromAutoClose: 1; //offset = 444, size = 4
		Bool bCloseOnLevelChange: 1; //offset = 444, size = 4
		Bool bSaveSceneValuesOnClose: 1; //offset = 444, size = 4
		Bool bEnableScenePostProcessing: 1; //offset = 444, size = 4
		Bool bEnableSceneDepthTesting: 1; //offset = 444, size = 4
		Bool bRequiresNetwork: 1; //offset = 444, size = 4
		Bool bRequiresOnlineService: 1; //offset = 444, size = 4
		Bool bMenuLevelRestoresScene: 1; //offset = 444, size = 4
		Bool bFlushPlayerInput: 1; //offset = 444, size = 4
		Texture2D* ScenePreview; //offset = 448, size = 4
		Byte SceneInputMode; //offset = 452, size = 1
		Byte SceneRenderMode; //offset = 453, size = 1
		Vector2D CurrentViewportSize; //offset = 456, size = 8
		Name SceneOpenedCue; //offset = 464, size = 8
		Name SceneClosedCue; //offset = 472, size = 8
		UILayerBase* SceneLayerRoot; //offset = 480, size = 4
		__GetSceneInputMode__Delegate __GetSceneInputMode__Delegate; //offset = 484, size = 12
		__OnSceneActivated__Delegate __OnSceneActivated__Delegate; //offset = 496, size = 12
		__OnSceneDeactivated__Delegate __OnSceneDeactivated__Delegate; //offset = 508, size = 12
		__OnTopSceneChanged__Delegate __OnTopSceneChanged__Delegate; //offset = 520, size = 12
		__ShouldModulateBackgroundAlpha__Delegate __ShouldModulateBackgroundAlpha__Delegate; //offset = 532, size = 12

		void AnimEnd( UIObject* AnimTarget, Int AnimIndex, UIAnimationSeq* AnimSeq );
		void LogCurrentState( Int Indent );
		void LogRenderBounds( Int Indent, Int I );
		void LogDockingStack();
		Bool CloseScene( UIScene* SceneToClose, Bool bSkipKismetNotify, Bool bSkipAnimation, Bool bResult );
		UIScene* OpenScene( UIScene* SceneToOpen, Bool bSkipAnimation, SceneDelegate SceneDelegate, GameUISceneClient* GameSceneClient, UIScene* OpenedScene );
		void NotifyLinkStatusChanged( Bool bConnected, UIScene* ParentScene );
		void NotifyOnlineServiceStatusChanged( Byte NewConnectionStatus, UIScene* ParentScene );
		void NotifyGameSessionEnded();
		void SceneCreated( UIScene* CreatedScene );
		void SetVisibility( Bool bIsVisible, GameUISceneClient* GameSceneClient );
		void SetInputMask( Byte NewInputMask, Bool bRecurse, GameUISceneClient* GameSceneClient );
		void CalculateInputMask( Int ActivePlayers, GameUISceneClient* GameSceneClient, Byte NewMask, Byte PlayerIndex, Byte InputMode );
		void SceneDeactivated( GameUISceneClient* GameSceneClient, Int SubscriberIndex, UIObject* UIObj );
		void SceneActivated( Bool bInitialActivation, Int EventIndex, Array<UIEvent*> EventList, UIEvent_SceneActivated* SceneActivatedEvent );
		Bool SetActiveContextMenu( UIContextMenu* NewContextMenu, Int PlayerIndex );
		UIContextMenu* GetActiveContextMenu();
		Bool SetActiveToolTip( UIToolTip* NewToolTip );
		UIToolTip* GetActiveToolTip();
		UIContextMenu* GetDefaultContextMenu();
		UIToolTip* GetDefaultToolTip();
		Bool IsSceneActive( Bool bTopmostScene );
		WorldInfo* GetWorldInfo();
		void SetSceneInputMode( Byte NewInputMode );
		UIScene* GetPreviousScene( Bool bRequireMatchingPlayerOwner );
		UIDataStore* ResolveDataStore( Name DataStoreTag, LocalPlayer* InPlayerOwner );
		void UnbindSubscribers();
		void SaveSceneDataValues( Bool bUnbindSubscribers );
		void LoadSceneDataValues();
		SceneDataStore* GetSceneDataStore();
		void ResolveScenePositions();
		void RebuildDockingStack();
		Bool ShouldModulateBackgroundAlpha( Float AlphaModulationPercent );
		void OnTopSceneChanged( UIScene* NewTopScene );
		void OnSceneDeactivated( UIScene* DeactivatedScene );
		void OnSceneActivated( UIScene* ActivatedScene, Bool bInitialActivation );
		Byte GetSceneInputMode();
	};

	class UIPrefabScene: public UIScene
	{
		DECLARE_PACKAGE_CLASS( UIPrefabScene, UIScene, Engine )

	public:

		Pointer VfTable_FCallbackEventDevice; //offset = 544, size = 4
	};

	class UIProgressBar: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIProgressBar, UIObject, Engine )

	public:

		Pointer VfTable_IUIDataStorePublisher; //offset = 988, size = 4
		UIComp_DrawImage* BackgroundImageComponent; //offset = 992, size = 4
		UIComp_DrawImage* FillImageComponent; //offset = 996, size = 4
		UIComp_DrawImage* OverlayImageComponent; //offset = 1000, size = 4
		Bool bDrawOverlay: 1; //offset = 1004, size = 4
		UIDataStoreBinding DataSource; //offset = 1008, size = 48
		UIRangeData ProgressBarValue; //offset = 1056, size = 20
		Byte ProgressBarOrientation; //offset = 1076, size = 1

		void SetOverlayImage( Surface* NewImage );
		void SetFillImage( Surface* NewImage );
		void SetBackgroundImage( Surface* NewImage );
		Float GetValue( Bool bPercentageValue );
		Bool SetValue( Float NewValue, Bool bPercentageValue );
		Bool SaveSubscriberValue( Array<UIDataStore*> out_BoundDataStores, Int BindingIndex );
		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
		void OnGetProgressBarValue( UIAction_GetProgressBarValue* Action );
		void OnSetProgressBarValue( UIAction_SetProgressBarValue* Action );
	};

	class UIResourceDataProvider: public UIPropertyDataProvider
	{
		DECLARE_PACKAGE_CLASS( UIResourceDataProvider, UIPropertyDataProvider, Engine )

	public:

		Pointer VfTable_IUIListElementCellProvider; //offset = 100, size = 4

		Bool IsProviderDisabled();
	};

	enum ESafeRegionType
	{
		ESRT_FullRegion,
		ESRT_TextSafeRegion,
	};

	class UISafeRegionPanel: public UIContainer
	{
		DECLARE_PACKAGE_CLASS( UISafeRegionPanel, UIContainer, Engine )

	public:

		Byte RegionType; //offset = 992, size = 1
		Array<Float> RegionPercentages; //offset = 996, size = 12
		Bool bForce4x3AspectRatio: 1; //offset = 1008, size = 4
		Bool bUseFullRegionIn4x3: 1; //offset = 1008, size = 4
	};

	class UIScrollbarButton: public UIButton
	{
		DECLARE_PACKAGE_CLASS( UIScrollbarButton, UIButton, Engine )

	public:
	};

	class UIScrollbarMarkerButton: public UIScrollbarButton
	{
		DECLARE_PACKAGE_CLASS( UIScrollbarMarkerButton, UIScrollbarButton, Engine )

	public:

		__OnButtonDragged__Delegate __OnButtonDragged__Delegate; //offset = 1000, size = 12

		void OnButtonDragged( UIScrollbarMarkerButton* Sender, Int PlayerIndex );
	};

	class UIScrollbar: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UIScrollbar, UIObject, Engine )

	public:

		UIComp_DrawImage* BackgroundImageComponent; //offset = 988, size = 4
		UIScrollbarButton* IncrementButton; //offset = 992, size = 4
		UIScrollbarButton* DecrementButton; //offset = 996, size = 4
		UIScrollbarMarkerButton* MarkerButton; //offset = 1000, size = 4
		UIStyleReference IncrementStyle; //offset = 1004, size = 32
		UIStyleReference DecrementStyle; //offset = 1036, size = 32
		UIStyleReference MarkerStyle; //offset = 1068, size = 32
		Float NudgeValue; //offset = 1100, size = 4
		Float NudgeMultiplier; //offset = 1104, size = 4
		Float NudgePercent; //offset = 1108, size = 4
		Float MarkerPosPercent; //offset = 1112, size = 4
		Float MarkerSizePercent; //offset = 1116, size = 4
		UIScreenValue_Extent BarWidth; //offset = 1120, size = 8
		UIScreenValue_Extent MinimumMarkerSize; //offset = 1128, size = 8
		UIScreenValue_Extent ButtonsExtent; //offset = 1136, size = 8
		Byte ScrollbarOrientation; //offset = 1144, size = 1
		Bool bAddCornerPadding: 1; //offset = 1148, size = 4
		UIScreenValue_Position MousePosition; //offset = 1152, size = 12
		Float MousePositionDelta; //offset = 1164, size = 4
		Bool bInitializeMarker: 1; //offset = 1168, size = 4
		__OnScrollActivity__Delegate __OnScrollActivity__Delegate; //offset = 1172, size = 12
		__OnClickedScrollZone__Delegate __OnClickedScrollZone__Delegate; //offset = 1184, size = 12

		Float GetMarkerSizePercent();
		Float GetMarkerPosPercent();
		Float GetNudgePercent();
		Float GetNudgeValue();
		void PostInitialize();
		void Initialized();
		void DragScroll( UIScrollbarMarkerButton* Sender, Int PlayerIndex );
		void DragScrollEnd( UIScreenObject* Sender, Int PlayerIndex );
		void DragScrollBegin( UIScreenObject* Sender, Int PlayerIndex );
		void ScrollDecrement( UIScreenObject* Sender, Int PlayerIndex );
		void ScrollIncrement( UIScreenObject* Sender, Int PlayerIndex );
		void EnableCornerPadding( Bool FlagValue );
		void SetNudgeSizePixels( Float NudgePixels );
		void SetNudgeSizePercent( Float NudgePercentage );
		void SetMarkerPosition( Float PositionPercentage );
		void SetMarkerSize( Float SizePercentage );
		Float GetScrollZoneWidth();
		Float GetScrollZoneExtent( Float ScrollZoneStart );
		Float GetMarkerButtonPosition();
		void OnClickedScrollZone( UIScrollbar* Sender, Float PositionPerc, Int PlayerIndex );
		Bool OnScrollActivity( UIScrollbar* Sender, Float PositionChange, Bool bPositionMaxed );
	};

	class UIScrollFrame: public UIContainer
	{
		DECLARE_PACKAGE_CLASS( UIScrollFrame, UIContainer, Engine )

	public:

		UIComp_DrawImage* StaticBackgroundImage; //offset = 992, size = 4
		UIScrollbar* ScrollbarHorizontal; //offset = 996, size = 4
		UIScrollbar* ScrollbarVertical; //offset = 1000, size = 4
		UIScreenValue_Extent HorizontalClientRegion; //offset = 1004, size = 8
		UIScreenValue_Extent VerticalClientRegion; //offset = 1012, size = 8
		Vector2D ClientRegionPosition; //offset = 1020, size = 8
		Float FrameBounds[4]; //offset = 1028, size = 4
		Bool bRefreshScrollbars: 1; //offset = 1044, size = 4
		Bool bRecalculateClientRegion: 1; //offset = 1044, size = 4

		void OnApplyScrolling( UIAction_ApplyScrolling* Action, Bool bSuccess, Float MarkerPosition );
		void ScrollZoneClicked( UIScrollbar* Sender, Float PositionPerc, Int PlayerIndex, Float MarkerPosition, Float TargetValue, Float VisibleRegionPosition, Float VisibleRegionSize );
		void OnChildRepositioned( UIScreenObject* Sender );
		void RemovedChild( UIScreenObject* WidgetOwner, UIObject* OldChild, Array<UIObject*> ExclusionSet );
		void AddedChild( UIScreenObject* WidgetOwner, UIObject* NewChild );
		Float GetVisibleRegionPercentage( Byte Orientation );
		void GetClipRegion( Float MinX, Float MinY, Float MaxX, Float MaxY );
		Vector2D GetClientRegionSizeVector();
		Vector2D GetClientRegionPositionVector();
		Float GetClientRegionSize( Byte Orientation );
		Float GetClientRegionPosition( Byte Orientation );
		Bool SetClientRegionPositionVector( Vector2D NewPosition );
		Bool SetClientRegionPosition( Byte Orientation, Float NewPosition );
		Bool ScrollRegion( UIScrollbar* Sender, Float PositionChange, Bool bPositionMaxed );
		void ReapplyFormatting( Bool bImmediately );
		void RefreshScrollbars( Bool bImmediately );
	};

	class UISlider: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UISlider, UIObject, Engine )

	public:

		Pointer VfTable_IUIDataStorePublisher; //offset = 988, size = 4
		UIComp_DrawImage* BackgroundImageComponent; //offset = 992, size = 4
		UIComp_DrawImage* SliderBarImageComponent; //offset = 996, size = 4
		UIComp_DrawImage* MarkerImageComponent; //offset = 1000, size = 4
		UIDataStoreBinding DataSource; //offset = 1004, size = 48
		UIComp_DrawStringSlider* CaptionRenderComponent; //offset = 1052, size = 4
		UIRangeData SliderValue; //offset = 1056, size = 20
		Bool bRenderCaption: 1; //offset = 1076, size = 4
		Byte SliderOrientation; //offset = 1080, size = 1
		UIScreenValue_Extent BarSize; //offset = 1084, size = 8
		UIScreenValue_Extent MarkerHeight; //offset = 1092, size = 8
		UIScreenValue_Extent MarkerWidth; //offset = 1100, size = 8
		Name IncrementCue; //offset = 1108, size = 8
		Name DecrementCue; //offset = 1116, size = 8

		void OnStateChanged( UIScreenObject* Sender, Int PlayerIndex, UIState* NewlyActiveState, UIState* PreviouslyActiveState );
		void SetMarkerImage( Surface* NewImage );
		void SetBarImage( Surface* NewImage );
		void SetBackgroundImage( Surface* NewImage );
		Float GetValue( Bool bPercentageValue );
		Bool SetValue( Float NewValue, Bool bPercentageValue );
		Bool SaveSubscriberValue( Array<UIDataStore*> out_BoundDataStores, Int BindingIndex );
		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
	};

	class UIState_Active: public UIState
	{
		DECLARE_PACKAGE_CLASS( UIState_Active, UIState, Engine )

	public:
	};

	class UIState_Focused: public UIState
	{
		DECLARE_PACKAGE_CLASS( UIState_Focused, UIState, Engine )

	public:

		Bool ActivateState( UIScreenObject* Target, Int PlayerIndex, Bool bResult );
	};

	class UIState_Pressed: public UIState
	{
		DECLARE_PACKAGE_CLASS( UIState_Pressed, UIState, Engine )

	public:
	};

	class UIState_TargetedTab: public UIState
	{
		DECLARE_PACKAGE_CLASS( UIState_TargetedTab, UIState, Engine )

	public:

		Bool IsWidgetClassSupported( Class* WidgetClass );
	};

	class UIStringRenderer: public Interface
	{
		DECLARE_PACKAGE_CLASS( UIStringRenderer, Interface, Engine )

	public:

		void SetTextAlignment( Byte Horizontal, Byte Vertical );
	};

	class UIStyle_Data: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( UIStyle_Data, UIRoot, Engine )

	public:

		String UIEditorControlClass; //offset = 60, size = 12
		LinearColor StyleColor; //offset = 72, size = 16
		Float StylePadding[2]; //offset = 88, size = 4
		Bool bEnabled: 1; //offset = 96, size = 4
		Bool bDirty: 1; //offset = 96, size = 4
	};

	struct StyleDataReference
	{
		UIStyle* OwnerStyle; //offset = 0, size = 4
		STYLE_ID SourceStyleID; //offset = 4, size = 16
		UIStyle* SourceStyle; //offset = 20, size = 4
		UIState* SourceState; //offset = 24, size = 4
		UIStyle_Data* CustomStyleData; //offset = 28, size = 4
	};

	class UIStyle_Combo: public UIStyle_Data
	{
		DECLARE_PACKAGE_CLASS( UIStyle_Combo, UIStyle_Data, Engine )

	public:

		StyleDataReference ImageStyle; //offset = 100, size = 32
		StyleDataReference TextStyle; //offset = 132, size = 32
	};

	class UIStyle_Image: public UIStyle_Data
	{
		DECLARE_PACKAGE_CLASS( UIStyle_Image, UIStyle_Data, Engine )

	public:

		Surface* DefaultImage; //offset = 100, size = 4
		TextureCoordinates Coordinates; //offset = 104, size = 16
		UIImageAdjustmentData AdjustmentType[2]; //offset = 120, size = 16
	};

	class UIStyle_Text: public UIStyle_Data
	{
		DECLARE_PACKAGE_CLASS( UIStyle_Text, UIStyle_Data, Engine )

	public:

		Font* StyleFont; //offset = 100, size = 4
		UITextAttributes Attributes; //offset = 104, size = 4
		Byte Alignment[2]; //offset = 108, size = 1
		Byte ClipMode; //offset = 110, size = 1
		Byte ClipAlignment; //offset = 111, size = 1
		TextAutoScaleValue AutoScaling; //offset = 112, size = 8
		Vector2D Scale; //offset = 120, size = 8
		Vector2D SpacingAdjust; //offset = 128, size = 8
	};

	class UIStyleResolver: public Interface
	{
		DECLARE_PACKAGE_CLASS( UIStyleResolver, Interface, Engine )

	public:

		Bool NotifyResolveStyle( UISkin* ActiveSkin, Bool bClearExistingValue, UIState* CurrentMenuState, Name StylePropertyName );
		Bool SetStyleResolverTag( Name NewResolverTag );
		Name GetStyleResolverTag();
	};

	class UITabButton: public UILabelButton
	{
		DECLARE_PACKAGE_CLASS( UITabButton, UILabelButton, Engine )

	public:

		UITabPage* TabPage; //offset = 1056, size = 4
		__IsActivationAllowed__Delegate __IsActivationAllowed__Delegate; //offset = 1060, size = 12

		void OnStateChanged( UIScreenObject* Sender, Int PlayerIndex, UIState* NewlyActiveState, UIState* PreviouslyActiveState, Int StateIndex );
		UITabPage* GetTabPage();
		Bool IsTargeted( Int PlayerIndex, Int StateIndex );
		Bool CanActivateButton( Int PlayerIndex );
		void RemovedFromParent( UIScreenObject* WidgetOwner );
		void RemovedChild( UIScreenObject* WidgetOwner, UIObject* OldChild, Array<UIObject*> ExclusionSet );
		void AddedChild( UIScreenObject* WidgetOwner, UIObject* NewChild, UITabPage* ChildPage );
		Bool IsActivationAllowed( UITabButton* Sender, Int PlayerIndex );
	};

	enum EUITabAutosizeType
	{
		TAST_Manual,
		TAST_Fill,
	};

	class UITabControl: public UIObject
	{
		DECLARE_PACKAGE_CLASS( UITabControl, UIObject, Engine )

	public:

		Array<UITabPage*> Pages; //offset = 988, size = 12
		UITabPage* ActivePage; //offset = 1000, size = 4
		UITabPage* PendingPage; //offset = 1004, size = 4
		Byte TabDockFace; //offset = 1008, size = 1
		Byte TabSizeMode; //offset = 1009, size = 1
		UIScreenValue_Extent TabButtonSize; //offset = 1012, size = 8
		UIScreenValue_Extent TabButtonPadding[2]; //offset = 1020, size = 8
		UIStyleReference TabButtonBackgroundStyle; //offset = 1036, size = 32
		UIStyleReference TabButtonCaptionStyle; //offset = 1068, size = 32
		Bool bAllowPagePreviews: 1; //offset = 1100, size = 4
		Name ActivateTabCue; //offset = 1104, size = 8
		Bool bUpdateLayout: 1; //offset = 1112, size = 4
		__OnPageActivated__Delegate __OnPageActivated__Delegate; //offset = 1116, size = 12
		__OnPageInserted__Delegate __OnPageInserted__Delegate; //offset = 1128, size = 12
		__OnPageRemoved__Delegate __OnPageRemoved__Delegate; //offset = 1140, size = 12

		Bool TabButtonClicked( UIScreenObject* EventObject, Int PlayerIndex, UITabButton* ClickedButton, UITabPage* PageToActivate, Bool bResult );
		Bool ProcessInputKey( InputEventParameters EventParms, Bool bResult, Name PrevKey, Name NextKey );
		Int FindPageIndexByPageRef( UITabPage* SearchPage, Int PageIndex );
		Int FindPageIndexByButton( UITabButton* SearchButton, Int PageIndex );
		Int FindPageIndexByCaption( String PageCaption, Bool bMarkupString, Int PageIndex, UITabButton* btn );
		Bool ActivateBestTab( Int PlayerIndex, Bool bFocusPage, Int StartIndex, Int PageIndex, Bool bResult );
		Bool ActivatePageByCaption( String PageCaption, Int PlayerIndex, Bool bFocusPage, Int PageIndex, Bool bResult );
		void AddedChild( UIScreenObject* WidgetOwner, UIObject* NewChild, UITabButton* TabButton );
		void PostInitialize();
		Bool EnableTabPage( UITabPage* PageToEnable, Int PlayerIndex, Bool bEnablePage, Bool bActivatePage, Bool bFocusPage, Bool bResult, Int PageIndex );
		Bool ActivatePreviousPage( Int PlayerIndex, Bool bFocusPage, Bool bAllowWrapping, Bool bResult, Int PageIndex, Int NumPages, UITabPage* PreviousPage );
		Bool ActivateNextPage( Int PlayerIndex, Bool bFocusPage, Bool bAllowWrapping, Bool bResult, Int PageIndex, Int NumPages, UITabPage* NextPage );
		Bool ActivatePage( UITabPage* PageToActivate, Int PlayerIndex, Bool bFocusPage, Bool bResult );
		Bool ReplacePage( UITabPage* ExistingPage, UITabPage* NewPage, Int PlayerIndex, Bool bFocusPage, Bool bResult, Int PageIndex );
		Bool RemovePage( UITabPage* PageToRemove, Int PlayerIndex, Bool bResult, Int PageIndex );
		Bool InsertPage( UITabPage* PageToInsert, Int PlayerIndex, Int InsertIndex, Bool bActivateImmediately, Bool bResult, UITabButton* NewTab, Int ChildInsertIndex, Int EventIdx, Array<UIEvent*> InsertedPageEvents );
		void PrivateActivatePage( UITabPage* PageToActivate, Int PlayerIndex );
		UITabPage* CreateTabPage( Class* TabPageClass, UITabPage* PagePrefab );
		UITabButton* FindTargetedTab( Int PlayerIndex );
		UITabPage* GetPageAtIndex( Int PageIndex );
		Int GetPageCount();
		void RequestLayoutUpdate();
		void OnPageRemoved( UITabControl* Sender, UITabPage* OldPage, Int PlayerIndex );
		void OnPageInserted( UITabControl* Sender, UITabPage* NewPage, Int PlayerIndex );
		void OnPageActivated( UITabControl* Sender, UITabPage* NewlyActivePage, Int PlayerIndex );
	};

	const char* DESCRIPTION_DATABINDING_INDEX = 2;
	const char* TOOLTIP_DATABINDING_INDEX = 1;
	const char* CAPTION_DATABINDING_INDEX = 0;

	class UITabPage: public UIContainer
	{
		DECLARE_PACKAGE_CLASS( UITabPage, UIContainer, Engine )

	public:

		Pointer VfTable_IUIDataStoreSubscriber; //offset = 992, size = 4
		Class* ButtonClass; //offset = 996, size = 4
		UITabButton* TabButton; //offset = 1000, size = 4
		UIDataStoreBinding ButtonCaption; //offset = 1004, size = 48
		UIDataStoreBinding ButtonToolTip; //offset = 1052, size = 48
		UIDataStoreBinding PageDescription; //offset = 1100, size = 48

		Bool IsActivePage(, UITabControl* TCOwner );
		void SetTabCaption( String NewButtonMarkup );
		void OnActiveStateChanged( UIScreenObject* Sender, Int PlayerIndex, UIState* NewlyActiveState, UIState* PreviouslyActiveState, Array<Int> IndicesToActivate, Bool bEnabledState, Bool bDisabledState );
		Bool CanActivatePage( Int PlayerIndex, Bool bResult );
		void AddedToTabControl( UITabControl* TabControl );
		void ClearBoundDataStores();
		void GetBoundDataStores( Array<UIDataStore*> out_BoundDataStores );
		void NotifyDataStoreValueUpdated( UIDataStore* SourceDataStore, Bool bValuesInvalidated, Name PropertyTag, UIDataProvider* SourceProvider, Int ArrayIndex );
		Bool RefreshSubscriberValue( Int BindingIndex );
		String GetDataStoreBinding( Int BindingIndex );
		void SetDataStoreBinding( String MarkupText, Int BindingIndex );
		UITabButton* GetTabButton( UITabControl* TabControl );
		UITabControl* GetOwnerTabControl();
		void RemovedFromParent( UIScreenObject* WidgetOwner );
		Bool LinkToTabButton( UITabButton* NewButton, UITabControl* TabControl, Bool bResult, UIObject* CurrentOwner, UITabControl* CurrentTabControl );
		UITabButton* CreateTabButton( UITabControl* TabControl, UITabButton* NewTabButton );
		Bool ActivatePage( Int PlayerIndex, Bool bActivate, Bool bTakeFocus, Bool bResult, Array<Int> IndicesToActivate );
	};

	class UITexture: public UIRoot
	{
		DECLARE_PACKAGE_CLASS( UITexture, UIRoot, Engine )

	public:

		UICombinedStyleData ImageStyleData; //offset = 60, size = 140
		Surface* ImageTexture; //offset = 200, size = 4

		Surface* GetSurface();
		Bool HasValidStyleData();
		void SetImageStyle( UIStyle_Image* NewImageStyle );
	};

	class UIToggleButton: public UILabelButton
	{
		DECLARE_PACKAGE_CLASS( UIToggleButton, UILabelButton, Engine )

	public:

		UIDataStoreBinding ValueDataSource; //offset = 1056, size = 48
		Bool bIsChecked: 1; //offset = 1104, size = 4
		UIComp_DrawString* CheckedStringRenderComponent; //offset = 1108, size = 4
		UIComp_DrawImage* CheckedBackgroundImageComponent; //offset = 1112, size = 4

		void OnSetBoolValue( UIAction_SetBoolValue* Action );
		Bool ButtonClicked( UIScreenObject* Sender, Int PlayerIndex );
		void SetValue( Bool bShouldBeChecked, Int PlayerIndex );
		Bool IsChecked();
		void SetCaption( String NewText );
	};

	class UIToolTip: public UILabel
	{
		DECLARE_PACKAGE_CLASS( UIToolTip, UILabel, Engine )

	public:

		Bool bPendingPositionUpdate: 1; //offset = 1052, size = 4
		Bool bResolveToolTipPosition: 1; //offset = 1052, size = 4
		Float SecondsActive; //offset = 1056, size = 4
		Bool bFollowCursor: 1; //offset = 1060, size = 4
		Bool bAutoHideOnInput: 1; //offset = 1060, size = 4
		__ActivateToolTip__Delegate __ActivateToolTip__Delegate; //offset = 1064, size = 12
		__DeactivateToolTip__Delegate __DeactivateToolTip__Delegate; //offset = 1076, size = 12
		__CanShowToolTip__Delegate __CanShowToolTip__Delegate; //offset = 1088, size = 12

		void UpdateToolTipPosition();
		Bool EndTracking();
		UIToolTip* BeginTracking();
		Bool CanShowToolTip( UIToolTip* Sender );
		Bool DeactivateToolTip();
		UIToolTip* ActivateToolTip( UIToolTip* Sender );
	};

	class SeqVar_UIRange: public SequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqVar_UIRange, SequenceVariable, Engine )

	public:

		UIRangeData RangeValue; //offset = 160, size = 20

		Bool IsValidLevelSequenceObject();
	};

	class UIAction: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( UIAction, SequenceAction, Engine )

	public:

		Int GamepadID; //offset = 240, size = 4
		Bool bAutoTargetOwner: 1; //offset = 244, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
		Bool IsValidLevelSequenceObject();
		UIScene* GetOwnerScene();
		UIScreenObject* GetOwner();
	};

	class UIAction_ActivateLevelEvent: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ActivateLevelEvent, UIAction, Engine )

	public:

		Name EventName; //offset = 248, size = 8
	};

	class UIAction_ChangeState: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ChangeState, UIAction, Engine )

	public:

		Class* StateType; //offset = 248, size = 4
		UIState* TargetState; //offset = 252, size = 4
		Bool bStateChangeFailed: 1; //offset = 256, size = 4
	};

	class UIAction_ActivateState: public UIAction_ChangeState
	{
		DECLARE_PACKAGE_CLASS( UIAction_ActivateState, UIAction_ChangeState, Engine )

	public:
	};

	class UIAction_DataStore: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_DataStore, UIAction, Engine )

	public:

		Int BindingIndex; //offset = 248, size = 4
	};

	class UIAction_DataStoreField: public UIAction_DataStore
	{
		DECLARE_PACKAGE_CLASS( UIAction_DataStoreField, UIAction_DataStore, Engine )

	public:

		UIScene* TargetScene; //offset = 252, size = 4
		String DataFieldMarkupString; //offset = 256, size = 12
	};

	class UIAction_AddDataField: public UIAction_DataStoreField
	{
		DECLARE_PACKAGE_CLASS( UIAction_AddDataField, UIAction_DataStoreField, Engine )

	public:

		Bool bPersistentField: 1; //offset = 268, size = 4
		Byte FieldType; //offset = 272, size = 1
	};

	class UIAction_Scene: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_Scene, UIAction, Engine )

	public:

		UIScene* Scene; //offset = 248, size = 4

		Bool IsValidLevelSequenceObject();
	};

	class UIAction_CloseScene: public UIAction_Scene
	{
		DECLARE_PACKAGE_CLASS( UIAction_CloseScene, UIAction_Scene, Engine )

	public:
	};

	class UIAction_CreateOnlineGame: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_CreateOnlineGame, UIAction, Engine )

	public:

		Name DataStoreName; //offset = 248, size = 8
		String MapName; //offset = 256, size = 12
	};

	class UIAction_DeactivateState: public UIAction_ChangeState
	{
		DECLARE_PACKAGE_CLASS( UIAction_DeactivateState, UIAction_ChangeState, Engine )

	public:
	};

	class UIAction_FindOnlineGames: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_FindOnlineGames, UIAction, Engine )

	public:

		Name DataStoreName; //offset = 248, size = 8
	};

	class UIAction_GetCellValue: public UIAction_DataStore
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetCellValue, UIAction_DataStore, Engine )

	public:

		Int CollectionIndex; //offset = 252, size = 4
		Name CellFieldName; //offset = 256, size = 8
		String CellFieldMarkup; //offset = 264, size = 12
		String CellFieldStringValue; //offset = 276, size = 12
		Surface* CellFieldImageValue; //offset = 288, size = 4
		UIRangeData CellFieldRangeValue; //offset = 292, size = 20
	};

	class UIAction_GetDatafieldValue: public UIAction_DataStoreField
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetDatafieldValue, UIAction_DataStoreField, Engine )

	public:

		String DataFieldStringValue; //offset = 268, size = 12
		Surface* DataFieldImageValue; //offset = 280, size = 4
		Array<Int> DataFieldArrayValue; //offset = 284, size = 12
		UIRangeData DataFieldRangeValue; //offset = 296, size = 20
	};

	class UIAction_GetLastFocused: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetLastFocused, UIAction, Engine )

	public:

		UIScreenObject* Parent; //offset = 248, size = 4
		UIScreenObject* LastFocused; //offset = 252, size = 4
	};

	class UIAction_GetValue: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetValue, UIAction, Engine )

	public:
	};

	class UIAction_GetListIndex: public UIAction_GetValue
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetListIndex, UIAction_GetValue, Engine )

	public:
	};

	class UIAction_GetListItemCount: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetListItemCount, UIAction, Engine )

	public:

		Int ItemCount; //offset = 248, size = 4
	};

	class UIAction_GetLoggedInPlayerCount: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetLoggedInPlayerCount, UIAction, Engine )

	public:

		Int TotalLoggedIn; //offset = 248, size = 4
		Int NumOnlineEnabled; //offset = 252, size = 4
		Int NumLocalOnly; //offset = 256, size = 4
		Int MaxPlayers; //offset = 260, size = 4

		void GetLoginStatus( Int PlayerIdx, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface, Byte Status );
	};

	class UIAction_GetNATType: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetNATType, UIAction, Engine )

	public:

		Bool bAlwaysOpen: 1; //offset = 248, size = 4

		Bool GetNATType( Byte OutNATType, Bool Result, OnlineSubsystem* OnlineSub, SystemInterface SystemInterface );
	};

	enum EFeaturePrivilegeMode
	{
		FPM_Online,
		FPM_Chat,
		FPM_DownloadUserContent,
	};

	class UIAction_GetPrivilegeLevel: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetPrivilegeLevel, UIAction, Engine )

	public:

		Int PlayerID; //offset = 248, size = 4
		Byte PrivMode; //offset = 252, size = 1

		Byte GetPrivilegeLevel( Int ControllerId, Byte Result, OnlineSubsystem* OnlineSub, PlayerInterface PlayerInterface );
	};

	class UIAction_JoinOnlineGame: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_JoinOnlineGame, UIAction, Engine )

	public:

		OnlineGameSearchResult PendingGameJoin; //offset = 248, size = 8
		WorldInfo* CachedWorldInfo; //offset = 256, size = 4
		Bool bIsDone: 1; //offset = 260, size = 4
		Bool bResult: 1; //offset = 260, size = 4

		String BuildJoinURL( String ResolvedConnectionURL );
		void OnJoinGameComplete( Bool bWasSuccessful, OnlineSubsystem* OnlineSub, String URL );
		void JoinOnlineGame( Byte ControllerId, OnlineGameSearchResult GameToJoin, WorldInfo* InWorldInfo, OnlineSubsystem* OnlineSub, GameInterface GameInterface );
	};

	class UIAction_MoveListItem: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_MoveListItem, UIAction, Engine )

	public:

		Int ElementIndex; //offset = 248, size = 4
		Int MoveCount; //offset = 252, size = 4
	};

	class UIAction_OpenScene: public UIAction_Scene
	{
		DECLARE_PACKAGE_CLASS( UIAction_OpenScene, UIAction_Scene, Engine )

	public:

		UIScene* OpenedScene; //offset = 252, size = 4
	};

	class UIAction_PlayUISoundCue: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_PlayUISoundCue, UIAction, Engine )

	public:

		String SoundCueName; //offset = 248, size = 12
	};

	class UIAction_PublishValue: public UIAction_DataStore
	{
		DECLARE_PACKAGE_CLASS( UIAction_PublishValue, UIAction_DataStore, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIAction_RefreshBindingValue: public UIAction_DataStore
	{
		DECLARE_PACKAGE_CLASS( UIAction_RefreshBindingValue, UIAction_DataStore, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIAction_RefreshStats: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_RefreshStats, UIAction, Engine )

	public:
	};

	class UIAction_SaveProfileSettings: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_SaveProfileSettings, UIAction, Engine )

	public:

		Bool bIsDone: 1; //offset = 248, size = 4
		Bool bWroteProfile: 1; //offset = 248, size = 4

		void OnProfileWriteComplete( Byte LocalUserEnum, Bool bWasSuccessful );
		void ClearDelegate( OnlineSubsystem* OnlineSub, PlayerInt PlayerInt, Int ControllerId );
		void RegisterDelegate( OnlineSubsystem* OnlineSub, PlayerInt PlayerInt, Int ControllerId );
	};

	class UIAction_SetDatafieldValue: public UIAction_DataStoreField
	{
		DECLARE_PACKAGE_CLASS( UIAction_SetDatafieldValue, UIAction_DataStoreField, Engine )

	public:

		String DataFieldStringValue; //offset = 268, size = 12
		Surface* DataFieldImageValue; //offset = 280, size = 4
		Array<Int> DataFieldArrayValue; //offset = 284, size = 12
		UIRangeData DataFieldRangeValue; //offset = 296, size = 20
		Bool bCommitValueImmediately: 1; //offset = 316, size = 4
	};

	class UIAction_SetFocus: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_SetFocus, UIAction, Engine )

	public:
	};

	class UIAction_ShowDeviceSelectionUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowDeviceSelectionUI, UIAction, Engine )

	public:

		Int SizeNeeded; //offset = 248, size = 4
		Bool bForceShowUI: 1; //offset = 252, size = 4
		Bool bIsDone: 1; //offset = 252, size = 4
		Bool bResult: 1; //offset = 252, size = 4
		Int DeviceID; //offset = 256, size = 4
		String DeviceName; //offset = 260, size = 12

		void OnDeviceSelectionComplete( Bool bWasSuccessful, OnlineSubsystem* OnlineSub, PlayerIntEx PlayerIntEx );
		void SelectDevice( OnlineSubsystem* OnlineSub, PlayerIntEx PlayerIntEx );
		void WriteToVariables();
	};

	class UIAction_ShowGamercardForServerHost: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowGamercardForServerHost, UIAction, Engine )

	public:
	};

	class UIAction_ShowKeyboardUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowKeyboardUI, UIAction, Engine )

	public:

		String TitleText; //offset = 248, size = 12
		String DefaultText; //offset = 260, size = 12
		String DescriptionText; //offset = 272, size = 12
		Bool bShouldValidate: 1; //offset = 284, size = 4
		Bool bIsPassword: 1; //offset = 284, size = 4
		Bool bIsDone: 1; //offset = 284, size = 4
		String StringReturnValue; //offset = 288, size = 12
		String TempStringReturnValue; //offset = 300, size = 12

		void OnKeyboardInputDone( Bool bWasSuccessful, OnlineSubsystem* OnlineSub, PlayerInt PlayerInt, Byte bWasCancelled );
		void ReadKeyboardInput( OnlineSubsystem* OnlineSub, PlayerInt PlayerInt );
	};

	class UIAction_ShowLoginUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowLoginUI, UIAction, Engine )

	public:

		Bool bIsDone: 1; //offset = 248, size = 4
		Bool bShowOnlineOnly: 1; //offset = 248, size = 4

		void OnLoginCancelled( OnlineSubsystem* OnlineSub, PlayerInt PlayerInt );
		void OnLoginChanged( OnlineSubsystem* OnlineSub, PlayerInt PlayerInt );
		void ShowUI( OnlineSubsystem* OnlineSub, PlayerInt PlayerInt );
	};

	class UIEvent: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( UIEvent, SequenceEvent, Engine )

	public:

		UIScreenObject* EventOwner; //offset = 280, size = 4
		Object* EventActivator; //offset = 284, size = 4
		String Description; //offset = 288, size = 12
		Bool bShouldRegisterEvent: 1; //offset = 300, size = 4
		Bool bPropagateEvent: 1; //offset = 300, size = 4
		__AllowEventActivation__Delegate __AllowEventActivation__Delegate; //offset = 304, size = 12

		Bool ShouldAlwaysInstance();
		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
		Bool IsValidLevelSequenceObject();
		Bool ActivateUIEvent( Int ControllerIndex, UIScreenObject* InEventOwner, Object* InEventActivator, Bool bActivateImmediately, Array<Int> IndicesToActivate );
		Bool ConditionalActivateUIEvent( Int ControllerIndex, UIScreenObject* InEventOwner, Object* InEventActivator, Bool bActivateImmediately, Array<Int> IndicesToActivate );
		Bool CanBeActivated( Int ControllerIndex, UIScreenObject* InEventOwner, Object* InEventActivator, Bool bActivateImmediately, Array<Int> IndicesToActivate );
		UIScene* GetOwnerScene();
		UIScreenObject* GetOwner();
		Bool AllowEventActivation( Int ControllerIndex, UIScreenObject* InEventOwner, Object* InEventActivator, Bool bActivateImmediately, Array<Int> IndicesToActivate );
	};

	class UIEvent_ValueChanged: public UIEvent
	{
		DECLARE_PACKAGE_CLASS( UIEvent_ValueChanged, UIEvent, Engine )

	public:
	};

	class UIEvent_CheckValueChanged: public UIEvent_ValueChanged
	{
		DECLARE_PACKAGE_CLASS( UIEvent_CheckValueChanged, UIEvent_ValueChanged, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_ComboboxValueChanged: public UIEvent_ValueChanged
	{
		DECLARE_PACKAGE_CLASS( UIEvent_ComboboxValueChanged, UIEvent_ValueChanged, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_ListIndexChanged: public UIEvent_ValueChanged
	{
		DECLARE_PACKAGE_CLASS( UIEvent_ListIndexChanged, UIEvent_ValueChanged, Engine )

	public:

		Int PreviousIndex; //offset = 316, size = 4
		Int CurrentIndex; //offset = 320, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_MetaObject: public UIEvent
	{
		DECLARE_PACKAGE_CLASS( UIEvent_MetaObject, UIEvent, Engine )

	public:

		Pointer VfTable_FCallbackEventDevice; //offset = 316, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_NumericOptionListValueChanged: public UIEvent_ValueChanged
	{
		DECLARE_PACKAGE_CLASS( UIEvent_NumericOptionListValueChanged, UIEvent_ValueChanged, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_OnClick: public UIEvent
	{
		DECLARE_PACKAGE_CLASS( UIEvent_OnClick, UIEvent, Engine )

	public:
	};

	class UIEvent_OnDoubleClick: public UIEvent
	{
		DECLARE_PACKAGE_CLASS( UIEvent_OnDoubleClick, UIEvent, Engine )

	public:
	};

	class UIEvent_State: public UIEvent
	{
		DECLARE_PACKAGE_CLASS( UIEvent_State, UIEvent, Engine )

	public:
	};

	class UIEvent_OnEnterState: public UIEvent_State
	{
		DECLARE_PACKAGE_CLASS( UIEvent_OnEnterState, UIEvent_State, Engine )

	public:
	};

	class UIEvent_OnLeaveState: public UIEvent_State
	{
		DECLARE_PACKAGE_CLASS( UIEvent_OnLeaveState, UIEvent_State, Engine )

	public:
	};

	class UIEvent_OptionListValueChanged: public UIEvent_ValueChanged
	{
		DECLARE_PACKAGE_CLASS( UIEvent_OptionListValueChanged, UIEvent_ValueChanged, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_ProcessInput: public UIEvent
	{
		DECLARE_PACKAGE_CLASS( UIEvent_ProcessInput, UIEvent, Engine )

	public:

		MultiMap_Mirror ActionMap; //offset = 316, size = 20

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_ProgressBarValueChanged: public UIEvent_ValueChanged
	{
		DECLARE_PACKAGE_CLASS( UIEvent_ProgressBarValueChanged, UIEvent_ValueChanged, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_Scene: public UIEvent
	{
		DECLARE_PACKAGE_CLASS( UIEvent_Scene, UIEvent, Engine )

	public:
	};

	class UIEvent_SliderValueChanged: public UIEvent_ValueChanged
	{
		DECLARE_PACKAGE_CLASS( UIEvent_SliderValueChanged, UIEvent_ValueChanged, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_SubmitData: public UIEvent
	{
		DECLARE_PACKAGE_CLASS( UIEvent_SubmitData, UIEvent, Engine )

	public:
	};

	class UIEvent_SubmitListData: public UIEvent_SubmitData
	{
		DECLARE_PACKAGE_CLASS( UIEvent_SubmitListData, UIEvent_SubmitData, Engine )

	public:

		Int SelectedItem; //offset = 316, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_SubmitTextData: public UIEvent_SubmitData
	{
		DECLARE_PACKAGE_CLASS( UIEvent_SubmitTextData, UIEvent_SubmitData, Engine )

	public:

		String Value; //offset = 316, size = 12
		Bool bClearValue: 1; //offset = 328, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_TabControl: public UIEvent
	{
		DECLARE_PACKAGE_CLASS( UIEvent_TabControl, UIEvent, Engine )

	public:

		UITabControl* OwnerTabControl; //offset = 316, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIEvent_TextValueChanged: public UIEvent_ValueChanged
	{
		DECLARE_PACKAGE_CLASS( UIEvent_TextValueChanged, UIEvent_ValueChanged, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UISequence: public Sequence
	{
		DECLARE_PACKAGE_CLASS( UISequence, Sequence, Engine )

	public:

		Pointer VfTable_IUIEventContainer; //offset = 352, size = 4
		Array<UIEvent*> UIEvents; //offset = 356, size = 12

		void RemoveSequenceObjects( Array<SequenceObject*> ObjectsToRemove );
		void RemoveSequenceObject( SequenceObject* ObjectToRemove );
		Bool AddSequenceObject( SequenceObject* NewObj, Bool bRecurse );
		void GetUIEvents( Array<UIEvent*> out_Events, Class* LimitClass );
		UIScreenObject* GetOwner();
	};

	class UIStateSequence: public UISequence
	{
		DECLARE_PACKAGE_CLASS( UIStateSequence, UISequence, Engine )

	public:

		UIState* GetOwnerState();
	};

	const char* SDPG_NumBits = 3;

	enum EDetailMode
	{
		DM_Low,
		DM_Medium,
	};

	enum ESceneDepthPriorityGroup
	{
		SDPG_UnrealEdBackground,
		SDPG_World,
		SDPG_Foreground,
	};

	class Scene: public Object
	{
		DECLARE_PACKAGE_CLASS( Scene, Object, Engine )

	public:
	};

	enum ETTSSpeaker
	{
		TTSSPEAKER_Paul,
		TTSSPEAKER_Harry,
		TTSSPEAKER_Frank,
		TTSSPEAKER_Dennis,
		TTSSPEAKER_Kit,
	};

	enum EDecompressionType
	{
		DTYPE_Setup,
		DTYPE_Invalid,
		DTYPE_Preview,
	};

	struct SubtitleCue
	{
		String Text; //offset = 0, size = 12
		Float Time; //offset = 12, size = 4
	};

	class SoundNodeWave: public SoundNode
	{
		DECLARE_PACKAGE_CLASS( SoundNodeWave, SoundNode, Engine )

	public:

		Int CompressionQuality; //offset = 100, size = 4
		Bool bForceRealtimeDecompression: 1; //offset = 104, size = 4
		Bool bUseTTS: 1; //offset = 104, size = 4
		Bool bAlwaysLocalise: 1; //offset = 104, size = 4
		Bool bMature: 1; //offset = 104, size = 4
		Bool bManualWordWrap: 1; //offset = 104, size = 4
		Bool m_bBioCinematicSound: 1; //offset = 104, size = 4
		Bool bDynamicResource: 1; //offset = 104, size = 4
		Bool bOneTimeUse: 1; //offset = 104, size = 4
		Bool BioPlayable: 1; //offset = 104, size = 4
		Byte TTSSpeaker; //offset = 108, size = 1
		String SpokenText; //offset = 112, size = 12
		Float Volume; //offset = 124, size = 4
		Float Pitch; //offset = 128, size = 4
		Float Duration; //offset = 132, size = 4
		Int NumChannels; //offset = 136, size = 4
		Int SampleRate; //offset = 140, size = 4
		Int SampleDataSize; //offset = 144, size = 4
		Array<Int> ChannelOffsets; //offset = 148, size = 12
		Array<Int> ChannelSizes; //offset = 160, size = 12
		UntypedBulkData_Mirror RawData; //offset = 172, size = 52
		Pointer RawPCMData; //offset = 224, size = 4
		Byte DecompressionType; //offset = 228, size = 1
		Array<Byte> PCMData; //offset = 232, size = 12
		Pointer VorbisDecompressor; //offset = 244, size = 4
		UntypedBulkData_Mirror CompressedPCData; //offset = 248, size = 52
		UntypedBulkData_Mirror CompressedXbox360Data; //offset = 300, size = 52
		UntypedBulkData_Mirror CompressedPS3Data; //offset = 352, size = 52
		Int ResourceID; //offset = 404, size = 4
		Int ResourceSize; //offset = 408, size = 4
		Pointer ResourceData; //offset = 412, size = 4
		Array<SubtitleCue> Subtitles; //offset = 416, size = 12
		String Comment; //offset = 428, size = 12
		BioSoundNodeWaveStreamingData* BioStreamingData; //offset = 440, size = 4
	};

	struct GatheredFoliageInstance
	{
		Color StaticLighting[4]; //offset = 48, size = 4
	};

	struct FoliageInstanceBase
	{
		Vector Location; //offset = 0, size = 12
		Vector XAxis; //offset = 12, size = 12
		Vector YAxis; //offset = 24, size = 12
		Vector ZAxis; //offset = 36, size = 12
	};

	class FoliageComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( FoliageComponent, PrimitiveComponent, Engine )

	public:

		Array<GatheredFoliageInstance> Instances; //offset = 448, size = 12
		Array<Guid> StaticallyRelevantLights; //offset = 460, size = 12
		Array<Guid> StaticallyIrrelevantLights; //offset = 472, size = 12
		Float DirectionalStaticLightingScale[3]; //offset = 484, size = 4
		Float SimpleStaticLightingScale[3]; //offset = 496, size = 4
		StaticMesh* InstanceStaticMesh; //offset = 508, size = 4
		MaterialInterface* Material; //offset = 512, size = 4
		Float MaxDrawRadius; //offset = 516, size = 4
		Float MinTransitionRadius; //offset = 520, size = 4
		Vector MinScale; //offset = 524, size = 12
		Vector MaxScale; //offset = 536, size = 12
		Float SwayScale; //offset = 548, size = 4
	};

	struct FoliageMesh
	{
		StaticMesh* InstanceStaticMesh; //offset = 0, size = 4
		MaterialInterface* Material; //offset = 4, size = 4
		Float MaxDrawRadius; //offset = 8, size = 4
		Float MinTransitionRadius; //offset = 12, size = 4
		Vector MinScale; //offset = 16, size = 12
		Vector MaxScale; //offset = 28, size = 12
		Float SwayScale; //offset = 40, size = 4
		Int Seed; //offset = 44, size = 4
		Float SurfaceAreaPerInstance; //offset = 48, size = 4
		Bool bCreateInstancesOnBSP: 1; //offset = 52, size = 4
		Bool bCreateInstancesOnStaticMeshes: 1; //offset = 52, size = 4
		Bool bCreateInstancesOnTerrain: 1; //offset = 52, size = 4
		FoliageComponent* Component; //offset = 56, size = 4
	};

	class FoliageFactory: public Volume
	{
		DECLARE_PACKAGE_CLASS( FoliageFactory, Volume, Engine )

	public:

		Array<FoliageMesh> Meshes; //offset = 568, size = 12
		Float VolumeFalloffRadius; //offset = 580, size = 4
		Float VolumeFalloffExponent; //offset = 584, size = 4
		Float SurfaceDensityUpFacing; //offset = 588, size = 4
		Float SurfaceDensityDownFacing; //offset = 592, size = 4
		Float SurfaceDensitySideFacing; //offset = 596, size = 4
		Float FacingFalloffExponent; //offset = 600, size = 4
		Int MaxInstanceCount; //offset = 604, size = 4
	};

	class SpeedTree: public Object
	{
		DECLARE_PACKAGE_CLASS( SpeedTree, Object, Engine )

	public:

		Pointer SRH; //offset = 60, size = 4
		Int RandomSeed; //offset = 64, size = 4
		Float Sink; //offset = 68, size = 4
		Float LeafStaticShadowOpacity; //offset = 72, size = 4
		MaterialInterface* BranchMaterial; //offset = 76, size = 4
		MaterialInterface* FrondMaterial; //offset = 80, size = 4
		MaterialInterface* LeafMaterial; //offset = 84, size = 4
		MaterialInterface* BillboardMaterial; //offset = 88, size = 4
		Float MaxBendAngle; //offset = 92, size = 4
		Float BranchExponent; //offset = 96, size = 4
		Float LeafExponent; //offset = 100, size = 4
		Float Response; //offset = 104, size = 4
		Float ResponseLimiter; //offset = 108, size = 4
		Float Gusting_MinStrength; //offset = 112, size = 4
		Float Gusting_MaxStrength; //offset = 116, size = 4
		Float Gusting_Frequency; //offset = 120, size = 4
		Float Gusting_MinDuration; //offset = 124, size = 4
		Float Gusting_MaxDuration; //offset = 128, size = 4
		Float BranchHorizontal_LowWindAngle; //offset = 132, size = 4
		Float BranchHorizontal_LowWindSpeed; //offset = 136, size = 4
		Float BranchHorizontal_HighWindAngle; //offset = 140, size = 4
		Float BranchHorizontal_HighWindSpeed; //offset = 144, size = 4
		Float BranchVertical_LowWindAngle; //offset = 148, size = 4
		Float BranchVertical_LowWindSpeed; //offset = 152, size = 4
		Float BranchVertical_HighWindAngle; //offset = 156, size = 4
		Float BranchVertical_HighWindSpeed; //offset = 160, size = 4
		Float LeafRocking_LowWindAngle; //offset = 164, size = 4
		Float LeafRocking_LowWindSpeed; //offset = 168, size = 4
		Float LeafRocking_HighWindAngle; //offset = 172, size = 4
		Float LeafRocking_HighWindSpeed; //offset = 176, size = 4
		Float LeafRustling_LowWindAngle; //offset = 180, size = 4
		Float LeafRustling_LowWindSpeed; //offset = 184, size = 4
		Float LeafRustling_HighWindAngle; //offset = 188, size = 4
		Float LeafRustling_HighWindSpeed; //offset = 192, size = 4
	};

	class SpeedTreeActor: public Actor
	{
		DECLARE_PACKAGE_CLASS( SpeedTreeActor, Actor, Engine )

	public:

		SpeedTreeComponent* SpeedTreeComponent; //offset = 508, size = 4
	};

	class SpeedTreeActorFactory: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( SpeedTreeActorFactory, ActorFactory, Engine )

	public:

		SpeedTree* SpeedTree; //offset = 100, size = 4
	};

	struct LightMapRef
	{
		Pointer Reference; //offset = 0, size = 4
	};

	struct SpeedTreeStaticLight
	{
		Guid Guid; //offset = 0, size = 16
		ShadowMap1D* BranchAndFrondShadowMap; //offset = 16, size = 4
		ShadowMap1D* LeafMeshShadowMap; //offset = 20, size = 4
		ShadowMap1D* LeafCardShadowMap; //offset = 24, size = 4
		ShadowMap1D* BillboardShadowMap; //offset = 28, size = 4
	};

	class SpeedTreeComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( SpeedTreeComponent, PrimitiveComponent, Engine )

	public:

		SpeedTree* SpeedTree; //offset = 448, size = 4
		Bool bUseLeaves: 1; //offset = 452, size = 4
		Bool bUseBranches: 1; //offset = 452, size = 4
		Bool bUseFronds: 1; //offset = 452, size = 4
		Bool bUseBillboards: 1; //offset = 452, size = 4
		Float LodNearDistance; //offset = 456, size = 4
		Float LodFarDistance; //offset = 460, size = 4
		Float LodLevelOverride; //offset = 464, size = 4
		MaterialInterface* BranchMaterial; //offset = 468, size = 4
		MaterialInterface* FrondMaterial; //offset = 472, size = 4
		MaterialInterface* LeafMaterial; //offset = 476, size = 4
		MaterialInterface* BillboardMaterial; //offset = 480, size = 4
		Texture2D* SpeedTreeIcon; //offset = 484, size = 4
		Array<SpeedTreeStaticLight> StaticLights; //offset = 488, size = 12
		LightMapRef BranchAndFrondLightMap; //offset = 500, size = 4
		LightMapRef LeafMeshLightMap; //offset = 504, size = 4
		LightMapRef LeafCardLightMap; //offset = 508, size = 4
		LightMapRef BillboardLightMap; //offset = 512, size = 4
		Matrix RotationOnlyMatrix; //offset = 528, size = 64
		Float WindMatrixOffset; //offset = 592, size = 4
	};

	class SpeedTreeComponentFactory: public PrimitiveComponentFactory
	{
		DECLARE_PACKAGE_CLASS( SpeedTreeComponentFactory, PrimitiveComponentFactory, Engine )

	public:

		SpeedTreeComponent* SpeedTreeComponent; //offset = 64, size = 4
	};

	struct LensFlareElement
	{
		Name ElementName; //offset = 0, size = 8
		Float RayDistance; //offset = 8, size = 4
		Bool bIsEnabled: 1; //offset = 12, size = 4
		Bool bUseSourceDistance: 1; //offset = 12, size = 4
		Bool bNormalizeRadialDistance: 1; //offset = 12, size = 4
		Bool bModulateColorBySource: 1; //offset = 12, size = 4
		Vector Size; //offset = 16, size = 12
		Array<MaterialInterface*> LFMaterials; //offset = 28, size = 12
		RawDistributionFloat LFMaterialIndex; //offset = 40, size = 28
		RawDistributionFloat Scaling; //offset = 68, size = 28
		RawDistributionVector AxisScaling; //offset = 96, size = 28
		RawDistributionFloat Rotation; //offset = 124, size = 28
		RawDistributionVector Color; //offset = 152, size = 28
		RawDistributionFloat Alpha; //offset = 180, size = 28
		RawDistributionVector Offset; //offset = 208, size = 28
		RawDistributionVector DistMap_Scale; //offset = 236, size = 28
		RawDistributionVector DistMap_Color; //offset = 264, size = 28
		RawDistributionFloat DistMap_Alpha; //offset = 292, size = 28
	};

	struct LensFlareElementCurvePair
	{
		String CurveName; //offset = 0, size = 12
		Object* CurveObject; //offset = 12, size = 4
	};

	class LensFlare: public Object
	{
		DECLARE_PACKAGE_CLASS( LensFlare, Object, Engine )

	public:

		LensFlareElement SourceElement; //offset = 60, size = 320
		StaticMesh* SourceMesh; //offset = 380, size = 4
		Byte SourceDPG; //offset = 384, size = 1
		Byte ReflectionsDPG; //offset = 385, size = 1
		Array<LensFlareElement> Reflections; //offset = 388, size = 12
		Float OuterCone; //offset = 400, size = 4
		Float InnerCone; //offset = 404, size = 4
		Float ConeFudgeFactor; //offset = 408, size = 4
		Float Radius; //offset = 412, size = 4
		RawDistributionFloat ScreenPercentageMap; //offset = 416, size = 28
		Bool bUseFixedRelativeBoundingBox: 1; //offset = 444, size = 4
		Bool bRenderDebugLines: 1; //offset = 444, size = 4
		Bool ThumbnailImageOutOfDate: 1; //offset = 444, size = 4
		Box FixedRelativeBoundingBox; //offset = 448, size = 28
		InterpCurveEdSetup* CurveEdSetup; //offset = 476, size = 4
		Int ReflectionCount; //offset = 480, size = 4
		Rotator ThumbnailAngle; //offset = 484, size = 12
		Float ThumbnailDistance; //offset = 496, size = 4
		Texture2D* ThumbnailImage; //offset = 500, size = 4
	};

	struct LensFlareElementInstance
	{
	};

	class LensFlareComponent: public PrimitiveComponent
	{
		DECLARE_PACKAGE_CLASS( LensFlareComponent, PrimitiveComponent, Engine )

	public:

		LensFlare* Template; //offset = 448, size = 4
		DrawLightConeComponent* PreviewInnerCone; //offset = 452, size = 4
		DrawLightConeComponent* PreviewOuterCone; //offset = 456, size = 4
		DrawLightRadiusComponent* PreviewRadius; //offset = 460, size = 4
		Bool bAutoActivate: 1; //offset = 464, size = 4
		Bool bIsActive: 1; //offset = 464, size = 4
		Bool bHasTranslucency: 1; //offset = 464, size = 4
		Bool bHasUnlitTranslucency: 1; //offset = 464, size = 4
		Bool bHasUnlitDistortion: 1; //offset = 464, size = 4
		Bool bUsesSceneColor: 1; //offset = 464, size = 4
		Float OuterCone; //offset = 468, size = 4
		Float InnerCone; //offset = 472, size = 4
		Float ConeFudgeFactor; //offset = 476, size = 4
		Float Radius; //offset = 480, size = 4
		LinearColor SourceColor; //offset = 484, size = 16
		Pointer ReleaseResourcesFence; //offset = 500, size = 4

		void SetIsActive( Bool bInIsActive );
		void SetSourceColor( LinearColor InSourceColor );
		void SetTemplate( LensFlare* NewTemplate );
	};

	class LensFlareSource: public Actor
	{
		DECLARE_PACKAGE_CLASS( LensFlareSource, Actor, Engine )

	public:

		LensFlareComponent* LensFlareComp; //offset = 508, size = 4
		Bool bCurrentlyActive: 1; //offset = 512, size = 4

		void SetActorParameter( Name ParameterName, Actor* Param );
		void SetExtColorParameter( Name ParameterName, Float Red, Float Green, Float Blue, Float Alpha );
		void SetColorParameter( Name ParameterName, LinearColor Param );
		void SetVectorParameter( Name ParameterName, Vector Param );
		void SetFloatParameter( Name ParameterName, Float Param );
		void OnToggle( SeqAct_Toggle* Action );
		void SetTemplate( LensFlare* NewTemplate );
	};

	enum EEffectsMaterialType
	{
		EMT_None,
		EMT_Stun,
		EMT_X_Gamma,
		EMT_X_Ice,
		EMT_X_Plasma,
		EMT_X_Tesla,
		EMT_X_Vorpal,
		DEPRECATED_EMT_X_Fusion,
		EMT_X_Fire,
		EMT_B_BioticMode,
		EMT_B_Lift,
		EMT_B_Throw,
		EMT_B_Warp,
		EMT_B_Weaken,
		DEPRECATED_EMT_B_Barrier,
		EMT_B_Stasis,
		EMT_DarkArmour,
		DEPRECATED_EMT_T_TechMode,
		EMT_T_Hacking,
		DEPRECATED_EMT_T_EMP,
		EMT_T_DampingField,
		EMT_T_Sabotage,
		EMT_T_Heal,
		DEPRECATED_EMT_T_Shock,
		DEPRECATED_EMT_C_SeigePulse,
		DEPRECATED_EMT_C_RadiationBurst,
		EMT_Adrenaline,
	};

	class BioEffectsMaterials: public Object
	{
		DECLARE_PACKAGE_CLASS( BioEffectsMaterials, Object, Engine )

	public:
	};

	class BioGuiSoundCooker: public Object
	{
		DECLARE_PACKAGE_CLASS( BioGuiSoundCooker, Object, Engine )

	public:

		Array<SoundCue*> lstReferencedSoundCues; //offset = 60, size = 12
	};

	enum ASParamTypes
	{
		ASParam_Integer,
		ASParam_Float,
		ASParam_String,
	};

	enum SFMovieStrokeStyle
	{
		SF_MSS_Correct,
		SF_MSS_Normal,
	};

	enum BioGuiEvents
	{
		BIOGUI_EVENT_ON_ENTER,
		BIOGUI_EVENT_ON_EXIT,
		BIOGUI_EVENT_AXIS_LSTICK_X,
		BIOGUI_EVENT_AXIS_LSTICK_Y,
		BIOGUI_EVENT_AXIS_RSTICK_X,
		BIOGUI_EVENT_AXIS_RSTICK_Y,
		BIOGUI_EVENT_AXIS_MOUSE_X,
		BIOGUI_EVENT_AXIS_MOUSE_Y,
		BIOGUI_EVENT_CONTROL_DOWN,
		BIOGUI_EVENT_CONTROL_LEFT,
		BIOGUI_EVENT_CONTROL_RIGHT,
		BIOGUI_EVENT_CONTROL_UP,
		BIOGUI_EVENT_BUTTON_A,
		BIOGUI_EVENT_BUTTON_B,
		BIOGUI_EVENT_BUTTON_X,
		BIOGUI_EVENT_BUTTON_Y,
		BIOGUI_EVENT_BUTTON_LT,
		BIOGUI_EVENT_BUTTON_RT,
		BIOGUI_EVENT_BUTTON_LB,
		BIOGUI_EVENT_BUTTON_RB,
		BIOGUI_EVENT_BUTTON_BACK,
		BIOGUI_EVENT_BUTTON_START,
		BIOGUI_EVENT_BUTTON_LTHUMB,
		BIOGUI_EVENT_BUTTON_RTHUMB,
		BIOGUI_EVENT_KEY_ESCAPE,
		BIOGUI_EVENT_KEY_DELETE,
	};

	struct ASParams
	{
		Byte Type; //offset = 0, size = 1
		Int nVar; //offset = 4, size = 4
		Float fVar; //offset = 8, size = 4
		String sVar; //offset = 12, size = 12
		Bool bVar: 1; //offset = 24, size = 4
	};

	class BioSFSharedBase: public Object
	{
		DECLARE_PACKAGE_CLASS( BioSFSharedBase, Object, Engine )

	public:
	};

	enum GUILayout
	{
		GUILayout_PC,
		GUILayout_XBox,
	};

	struct BioSFQueuedCommand
	{
		String sCommand; //offset = 0, size = 12
		Array<ASParams> lstParameters; //offset = 12, size = 12
	};

	class BioSFHandler: public BioSFSharedBase
	{
		DECLARE_PACKAGE_CLASS( BioSFHandler, BioSFSharedBase, Engine )

	public:

		BioSFPanel* oPanel; //offset = 60, size = 4
		WorldInfo* oWorldInfo; //offset = 64, size = 4
		Byte ScreenLayout; //offset = 68, size = 1
		Array<BioSFQueuedCommand> lstQueuedCommands; //offset = 72, size = 12
		Int nHandlerID; //offset = 84, size = 4
		Bool m_bWasDisplayingUIMouseCursor: 1; //offset = 88, size = 4
		Bool bSetGameMode: 1; //offset = 88, size = 4
		Array<Name> PressedKeys; //offset = 92, size = 12

		void PlayGuiSoundString( String sSound );
		PlayerController* GetPlayerController();
		void QueueCommand( BioSFQueuedCommand stQueuedCommand );
		void PauseMenuAdditionalProcessing();
		Bool SetExternalTextureOnPanel( String Resource, Texture* Texture );
		void StopGuiVoice();
		void PlayGuiVoice( Name nmSound );
		void StopGuiMusic();
		void PlayGuiMusic( Name nmMusic, Bool bForceRestart );
		void PlayGuiSound( Name nmSound );
		void HandleInputEvent( Byte Event, Float fValue );
		void SetWorld();
		void SendMouseToScaleForm( Byte nEvent );
		void SetMouseShown( Bool showIt );
		Bool IsMouseShown();
		void OnAspectRatioChanged();
		Bool IsVisibleAndEnabled();
		void OnInputFocusRecieved();
		void OnInputFocusLost();
		void GameSessionEnded();
		void OnPanelRemoved();
		void OnPanelAdded();
		void Update( Float fDeltaT );
		void HandleExternalEvent( Byte nHandler, Byte nCommand, Array<String> lstArguments );
		void HandleEvent( Byte nCommand, Array<String> lstArguments );
	};

	enum BioThumbstickDir
	{
		BTD_Centered,
		BTD_Negative,
	};

	struct SFSharedAssetMap
	{
		String SharedFile; //offset = 0, size = 12
		String SharedResource; //offset = 12, size = 12
	};

	struct SFHandlerTemplate
	{
		Name Tag; //offset = 0, size = 8
		Byte Platform; //offset = 8, size = 1
		String HandlerClass; //offset = 12, size = 12
		String PanelResource; //offset = 24, size = 12
		Bool UseEdgeAA: 1; //offset = 36, size = 4
		Float CurvePixelError; //offset = 40, size = 4
		Byte StrokeStyle; //offset = 44, size = 1
		String PanelClass; //offset = 48, size = 12
		Int ZOrder; //offset = 60, size = 4
		Bool bAutoStart: 1; //offset = 64, size = 4
		Bool bAutoVisible: 1; //offset = 64, size = 4
	};

	struct EventCooldownStruct
	{
		Byte EventID; //offset = 0, size = 1
		Float fCooldown; //offset = 4, size = 4
	};

	class BioSFManager: public BioSFSharedBase
	{
		DECLARE_PACKAGE_CLASS( BioSFManager, BioSFSharedBase, Engine )

	public:

		Array<BioSFPanel*> m_lstPanels; //offset = 60, size = 12
		Array<EventCooldownStruct> lstEventCooldowns; //offset = 72, size = 12
		Array<SFHandlerTemplate> HandlerLibrary; //offset = 84, size = 12
		Array<SFSharedAssetMap> SharedAssetLibrary; //offset = 96, size = 12
		Float UDLRInitialCooldown; //offset = 108, size = 4
		Float UDLRHeldCooldown; //offset = 112, size = 4
		Pointer TransitionCacheProviderRef; //offset = 116, size = 4
		Bio2DA* m_pGuiSounds2DA; //offset = 120, size = 4
		Bio2DA* m_pGuiMusic2DA; //offset = 124, size = 4
		BioGuiSoundCooker* oSoundCooker; //offset = 128, size = 4
		Array<SoundCue*> lstReferencedSoundCues; //offset = 132, size = 12
		AudioComponent* oActiveMusic; //offset = 144, size = 4
		AudioComponent* oActiveVoice; //offset = 148, size = 4
		Name nmActiveMusic; //offset = 152, size = 8
		Name nmActiveVoice; //offset = 160, size = 8
		Float fNextFadeOut; //offset = 168, size = 4
		Byte nLastUDLR; //offset = 172, size = 1
		Byte nLStickX; //offset = 173, size = 1
		Byte nLStickY; //offset = 174, size = 1
		Array<Name> m_aWorldSoundGroups; //offset = 176, size = 12
		Bool bSafeToRemovePanels: 1; //offset = 188, size = 4
		Bool bControlEventFromThumbstick: 1; //offset = 188, size = 4
		Map_Mirror m_UnrealKeyToGfxKeyMap; //offset = 192, size = 20
		SFXSF_ControlTokenLibrary* m_oControlTokens; //offset = 212, size = 4
		BioSFPanel* m_FocusPanel; //offset = 216, size = 4

		Bool IsGuiVisibleAndEnabled( Name Tag );
		Bool IsMovieInFocus();
		BioSFPanel* GetFocusMovie();
		PlayerController* GetPlayerController();
		void InitManager();
		Bool SetMouseVisibility( Object* pObject, Bool bShow );
		void GameSessionEnded( Int I );
		void Update( Float fDeltaT );
		void AddEventCooldown( Byte nEvent, Float fCooldown );
		void StopGuiVoice();
		void PlayGuiVoice( Name nmSound );
		void StopGuiMusic();
		void PlayGuiMusic( Name nmMusic, Bool bForceRestart );
		void PlayGuiSound( Name nmSound );
		Bool StopSound( Name nmSound );
		Bool PlaySound( Name nmSound );
		Class* GetHandlerClass( Name nmTag );
		void HandleInputEvent( Byte Event, Float fCooldown, Float fValue, Float fDeadzoneValue );
		void ClearAll();
		void ShowAll();
		void HideAllMessages();
		void HideAll();
		Bool IsOnTop( BioSFPanel* oPanel );
		Bool IsFullScreen();
		Bool PanelExists( BioSFPanel* oPanel );
		BioSFPanel* GetPanelByTag( Name nmMovieTag );
		Bool RemovePanel( BioSFPanel* oPanel, Bool bReportUsage );
		void AddPanel( BioSFPanel* oPanel, Bool bAddDefaultHandler );
		BioSFPanel* CreatePanel( Name nmMovieTag, Bool bAddPanel );
	};

	const char* PROFILE_FRAME_AVERAGE_COUNT = 10;

	enum ESFPanelInvokeCategories
	{
		SFP_INVOKECAT_NONE,
		SFP_INVOKECAT_HUD_Init,
		SFP_INVOKECAT_HUD_Radar,
		SFP_INVOKECAT_HUD_Squad,
		SFP_INVOKECAT_HUD_Target,
		SFP_INVOKECAT_HUD_Ticker,
		SFP_INVOKECAT_HUD_Environment,
		SFP_INVOKECAT_HUD_Power,
	};

	enum ESFPanelInvokeLabel
	{
		SFP_INVOKELABEL_NONE,
		SFP_INVOKELABEL_HUD_InitializeHUD,
		SFP_INVOKELABEL_HUD_UpdateHUDMode,
		SFP_INVOKELABEL_HUD_UpdateTargetStatus,
		SFP_INVOKELABEL_HUD_ChangeSelectedWeapon,
		SFP_INVOKELABEL_HUD_UpdateWeaponHeat,
		SFP_INVOKELABEL_HUD_ShowSniper,
		SFP_INVOKELABEL_HUD_HideSniper,
		SFP_INVOKELABEL_HUD_UpdateVehicleStatus,
		SFP_INVOKELABEL_HUD_UpdateVehicleStatusSquad,
		SFP_INVOKELABEL_HUD_UpdateSquadStatus,
		SFP_INVOKELABEL_HUD_ChangeSelectedSquadOrder,
		SFP_INVOKELABEL_HUD_UpdateSquadFormation,
		SFP_INVOKELABEL_HUD_setSquadVisible,
		SFP_INVOKELABEL_HUD_showCoverElement,
		SFP_INVOKELABEL_HUD_hideCoverElement,
		SFP_INVOKELABEL_HUD_showClimbMantleElement,
		SFP_INVOKELABEL_HUD_hideClimbMantleElement,
		SFP_INVOKELABEL_HUD_UpdateStorm,
		SFP_INVOKELABEL_HUD_addUpdateFiringDirection,
		SFP_INVOKELABEL_HUD_removeFiringDirection,
		SFP_INVOKELABEL_HUD_UpdatePowerPadMode,
		SFP_INVOKELABEL_HUD_CreateIconDumpListItem,
		SFP_INVOKELABEL_HUD_UpdateIconDumpListTotal,
		SFP_INVOKELABEL_HUD_CreateMapPowerList,
		SFP_INVOKELABEL_HUD_PopulateMapPowerItem,
		SFP_INVOKELABEL_HUD_CreateMapCommandsList,
		SFP_INVOKELABEL_HUD_UpdateCustomButtons,
	};

	struct SFPanelInvokePrereq
	{
		Byte eLabel; //offset = 0, size = 1
		Byte eCategory; //offset = 1, size = 1
		Bool bAllowInvoke: 1; //offset = 4, size = 4
	};

	struct SFPanelCachedInvoke
	{
		Byte eLabel; //offset = 0, size = 1
		Int nFramesTheSame; //offset = 4, size = 4
		Array<ASParams> lstParams; //offset = 8, size = 12
		Array<Byte> lstQualifications; //offset = 20, size = 12
		Bool bAutoSkip: 1; //offset = 32, size = 4
	};

	struct BioScaleformResource
	{
		Int Dummy1; //offset = 0, size = 4
		Int Dummy2; //offset = 4, size = 4
		String Dummy3; //offset = 8, size = 12
		Int Dummy4; //offset = 20, size = 4
		Int Dummy5; //offset = 24, size = 4
		Int Dummy6; //offset = 28, size = 4
		Float Dummy7; //offset = 32, size = 4
		Byte Dummy8; //offset = 36, size = 1
		Byte Dummy9; //offset = 37, size = 1
		Int Dummy10; //offset = 40, size = 4
	};

	class BioSFPanel: public BioSFSharedBase
	{
		DECLARE_PACKAGE_CLASS( BioSFPanel, BioSFSharedBase, Engine )

	public:

		Bool IsVisible: 1; //offset = 60, size = 4
		Bool bFullScreen: 1; //offset = 60, size = 4
		Bool bInitialized: 1; //offset = 60, size = 4
		Bool bToBeRemoved: 1; //offset = 60, size = 4
		Bool bHandleInputThisFrame: 1; //offset = 60, size = 4
		Bool bInputDisabled: 1; //offset = 60, size = 4
		Bool bUseThumbstickAsDPad: 1; //offset = 60, size = 4
		Bool bApplyLeftThumbstickDeadzone: 1; //offset = 60, size = 4
		Bool bApplyRightThumbstickDeadzone: 1; //offset = 60, size = 4
		Bool bEventsDisabled: 1; //offset = 60, size = 4
		Bool bPipeDirectInputToGFx: 1; //offset = 60, size = 4
		Bool bIgnoreGCOnPanelCleanup: 1; //offset = 60, size = 4
		Bool bCloseMovieOnRemove: 1; //offset = 60, size = 4
		Bool bMouseVisible: 1; //offset = 60, size = 4
		Name nmTag; //offset = 64, size = 8
		BioScaleformResource MovieResource; //offset = 72, size = 44
		Array<BioSFHandler*> ScriptHandlers; //offset = 116, size = 12
		BioSFHandler* m_DefaultHandler; //offset = 128, size = 4
		BioSFManager* oParentManager; //offset = 132, size = 4
		Pointer TransitionCacheNodeRef; //offset = 136, size = 4
		Object* MovieRef; //offset = 140, size = 4
		String bannedChars; //offset = 144, size = 12
		Float m_fSavedAspectRatio; //offset = 156, size = 4
		Int m_nUpdateFrame; //offset = 160, size = 4
		Float m_fUpdateTime; //offset = 164, size = 4
		Float m_UpdateTimes[10]; //offset = 168, size = 4
		Float m_RenderTimes[10]; //offset = 208, size = 4
		Float m_AdvanceTimes[10]; //offset = 248, size = 4

		void GetProfileTimes( Float fUpdateTime, Float fRenderTime, Float fAdvanceTime );
		BioSFHandler* GetDefaultHandler();
		Vector2D GetStageViewportOffset();
		void GameSessionEnded( Int I );
		void OnInputFocusRecieved();
		void OnInputFocusLost();
		void SetMouseVisible( Bool bVisible );
		void SetMovieVisibility( Bool bVisible );
		void UpdateAspectRatio( Bool bForce, Bool bHorizontal );
		Int ExIntGetPlatform();
		void SetExternalInterface( Object* oInterface );
		void HandleInputEvent( Byte Event, Float fValue );
		void SetEventsDisabled( Bool bDisabled );
		void SetInputDisabled( Bool bDisabled );
		void SetToBeRemoved( Bool bRemove );
		Byte GetStrokeStyle();
		void SetStrokeStyle( Byte nStrokeStyle );
		Float GetCurvePixelError();
		void SetCurvePixelError( Float fCurvePixelError );
		Bool GetUseEdgeAA();
		void SetUseEdgeAA( Bool bUseEdgeAA );
		Bool IsAvailable( String sPath );
		Int GetVariableInt( String sPath );
		Bool GetVariableBool( String sPath );
		Float GetVariableFloat( String sPath );
		String GetVariableString( String sPath );
		Bool SetVariableStringArray( String Path, Int Index, Array<String> arg );
		Bool GetVariableStringArray( String Path, Int Index, Array<String> arg );
		void SetVariableInt( String sPath, Int nVar );
		void SetVariableBool( String sPath, Bool bVar );
		void SetVariableFloat( String sPath, Float fVar );
		void SetVariableString( String sPath, String sVar );
		void SetTextFieldText( String sPath, String sText );
		void SetClipLocation( String sPath, Float fX, Float fY );
		void SetClipHeight( String sPath, Float fHeight );
		void SetClipWidth( String sPath, Float fWidth );
		void SetClipVisibility( String sPath, Bool bVisible );
		void GotoLabelAndPlay( String sPath, String sLabel );
		void GotoFrameAndPlay( String sPath, Int nFrame );
		void GotoLabelAndStop( String sPath, String sLabel );
		void GotoFrameAndStop( String sPath, Int nFrame );
		void SetInvokePrereq( Byte eCat, Byte eInvoke, Bool bAllowInvoke );
		Bool RequestInvoke( Byte eCat, Byte eInvoke, String sMethodName, Array<ASParams> lstArguments, Bool bUseCacheConditional );
		String InvokeMethodArgsReturn( String sMethodName, Array<ASParams> lstArguments );
		String InvokeMethodReturn( String sMethodName );
		void InvokeMethodArgs( String sMethodName, Array<ASParams> lstArguments );
		void InvokeMethod( String sMethodName );
		Bool Load( String sResourcePath );
		Bool RemoveHandler( Class* oHandlerClass );
		BioSFHandler* AttachHandler( Class* oHandlerClass );
		BioSFHandler* AttachDefaultHandler();
		void CleanupGameMode( BioSFHandler* oHandler, Bool bForce );
		void RemoveScriptHandler( BioSFHandler* oHandler );
		void AddScriptHandler( BioSFHandler* oHandler );
	};

	class BioSFTexture: public Object
	{
		DECLARE_PACKAGE_CLASS( BioSFTexture, Object, Engine )

	public:

		String TextureName; //offset = 60, size = 12
		Int SizeX; //offset = 72, size = 4
		Int SizeY; //offset = 76, size = 4
		Byte Format; //offset = 80, size = 1
		Byte Filter; //offset = 81, size = 1
		Byte LODGroup; //offset = 82, size = 1
		Byte AddressX; //offset = 83, size = 1
		Byte AddressY; //offset = 84, size = 1
		Array<Byte> CompressedData; //offset = 88, size = 12
		Int Platform; //offset = 100, size = 4
		Int MipSize; //offset = 104, size = 4
	};

	struct SFXSFControlToken
	{
		Name Token; //offset = 0, size = 8
		String TexturePath; //offset = 8, size = 12
		String Resource; //offset = 20, size = 12
		Int Height; //offset = 32, size = 4
		Int Width; //offset = 36, size = 4
		String Align; //offset = 40, size = 12
		String VAlign; //offset = 52, size = 12
		Int FontVScale; //offset = 64, size = 4
		Int VSpace; //offset = 68, size = 4
		Bool Cook: 1; //offset = 72, size = 4
	};

	class SFXSF_ControlTokenLibrary: public Object
	{
		DECLARE_PACKAGE_CLASS( SFXSF_ControlTokenLibrary, Object, Engine )

	public:

		Array<SFXSFControlToken> ControlTokens; //offset = 60, size = 12
		Array<Texture2D*> aCookedResources; //offset = 72, size = 12
	};

	class SFXSFPanel_Conversation: public BioSFPanel
	{
		DECLARE_PACKAGE_CLASS( SFXSFPanel_Conversation, BioSFPanel, Engine )

	public:
	};

	class SFXSFPanel_LevelLoadTip: public BioSFPanel
	{
		DECLARE_PACKAGE_CLASS( SFXSFPanel_LevelLoadTip, BioSFPanel, Engine )

	public:

		Bool bInitialize: 1; //offset = 288, size = 4
	};

	class SFXSFPanel_SaveWidget: public BioSFPanel
	{
		DECLARE_PACKAGE_CLASS( SFXSFPanel_SaveWidget, BioSFPanel, Engine )

	public:

		Float m_fSaveStart; //offset = 288, size = 4
		Float m_fElapsedSaveTime; //offset = 292, size = 4
		Float m_fRemainingDisplayTime; //offset = 296, size = 4
		Float m_fElapsedDisplayTime; //offset = 300, size = 4
		Bool m_bMessageVisible: 1; //offset = 304, size = 4
		Bool m_bMessageUsedTransition: 1; //offset = 304, size = 4
		Bool m_bShowMessage: 1; //offset = 304, size = 4
		m_srSavingMessage m_srSavingMessage; //offset = 308, size = 4
		String m_sSavingMessage; //offset = 312, size = 12
		Float m_fMessageDisplayTime; //offset = 324, size = 4

		void PC_ShowSaveMessage();
		void HideSavingMessage( Bool bDoTransition );
		void ShowSavingMessage( Bool bDoTransition );
	};

	const char* SKYNET_SENDNUCLEUSTELEMETRY = 0x00;
	const char* SKYNET_SCRUBTEST = 0x00;
	const char* SKYNET_AUTOFPS = 0x00;
	const char* SKYNET_TEMP = 0x00;
	const char* SKYNET_DISPLAYSESSION = 0x00;
	const char* SKYNET_VERBOSELOGGING = 0x00;
	const char* SKYNET_SILENTMODE = 0x00;
	const char* SKYNET_HIGHRESPATHS = 0x00;
	const char* SkyNetCommonEvent_AREA_DETAILS = 122;
	const char* SkyNetCommonEvent_CHEATHOOK = 121;
	const char* SkyNetCommonEvent_SCREENSHOT = 120;
	const char* SkyNetCommonEvent_WARNING = 120;
	const char* SkyNetCommonEvent_ASSERT = 120;
	const char* SkyNetCommonEvent_CRASH = 120;
	const char* SkyNetCommonEvent_MOVE = 120;
	const char* SkyNetCommonEvent_AreaEntered = 40;
	const char* SkyNetCommonEvent_AreaExited = 9;

	enum sessionStatus
	{
		SESSION_INACTIVE,
		SESSION_ACTIVE,
	};

	enum eventEnumID
	{
		OUT_OF_WORLD,
		OUT_OF_TEXTUREMEMORY,
		OUT_OF_SYSTEMMEMORY,
		COMBAT_START,
		COMBAT_END,
		GAME_START,
		GAME_END,
		GAME_LOADGAME,
		GAME_SAVEGAME,
		GAME_PROFILINGTIME,
		CONVERSATION_MISSINGVO,
		CONVERSATION_MISSINGLIPSYNC,
		CONVERSATION_FAILEDSTAGING,
		CONVERSATION_START,
		CONVERSATION_END,
		CONVERSATION_SKIPPEDLINE,
		CONVERSATION_SELECTRESPONSE,
		CONVERSATION_NODETRANSITION,
		PAWN_DEATH,
		PAWN_LEVELUP,
		PAWN_FAILEDPATHFIND,
		PAWN_TELEPORT,
		PAWN_USEPLACEABLE,
		PAWN_USEPOWER,
		PAWN_USEGRENADE,
		OUT_OF_TRIGGERSTREAM,
		BAD_STREAMING,
		SLOW_STREAMING,
		ERROR_LOADING,
		ERROR_NOAREAMAP,
		GAME_ENTERMAP,
		GAME_EXITMAP,
		PLACEABLE_STATECHANGE,
		PLOTSTATE_CHANGE,
		GAME_STATISTICS,
		SCRIPTING_FAILED,
		SCRIPTING_PASSED,
		USE_COVER,
		TREASURE,
		MISC_DEBUG,
		PURPLE_LEVEL,
		USE_ZOOM,
	};

	class BioRemoteLogger: public Object
	{
		DECLARE_PACKAGE_CLASS( BioRemoteLogger, Object, Engine )

	public:

		Pointer VfTable_FCallbackEventDevice; //offset = 60, size = 4
		String NoString; //offset = 64, size = 12
		Int m_sessionID; //offset = 76, size = 4
		Int m_sessionStatus; //offset = 80, size = 4
		Int m_runID; //offset = 84, size = 4
		Int m_runStatus; //offset = 88, size = 4
		String m_sRunMessage; //offset = 92, size = 12
		String m_sCurrentTest; //offset = 104, size = 12
		String m_sCurrentTestCasePath; //offset = 116, size = 12
		Int m_nCurrentTestPlanID; //offset = 128, size = 4
		Bool m_bSendTPMPackets: 1; //offset = 132, size = 4
		String m_UserName; //offset = 136, size = 12
		String m_remoteScreenshotPath; //offset = 148, size = 12
		String m_sCampaignName; //offset = 160, size = 12
		Int m_Interface; //offset = 172, size = 4
		Int m_enabled; //offset = 176, size = 4
		Int m_KeepAlive; //offset = 180, size = 4
		Int m_port; //offset = 184, size = 4
		String m_serverIP; //offset = 188, size = 12
		String m_FormattedMapName; //offset = 200, size = 12
		String m_LevelName; //offset = 212, size = 12
		String m_TriggerDesignName; //offset = 224, size = 12
		String m_TriggerDesignStateName; //offset = 236, size = 12
		String m_TriggerArtInChunkName; //offset = 248, size = 12
		Vector m_PlayerLocation; //offset = 260, size = 12
		String m_PlayerWeapon; //offset = 272, size = 12
		Bool m_PlayerInCover: 1; //offset = 284, size = 4
		Bool m_PlayerIsFiring: 1; //offset = 284, size = 4
		Bool m_PlayerIsGhosting: 1; //offset = 284, size = 4
		Int m_GameMode; //offset = 288, size = 4
		Vector m_PlayerLocationLastInfo; //offset = 292, size = 12
		Int m_online; //offset = 304, size = 4
		Float m_LastPacketTime; //offset = 308, size = 4
		Int m_testFlags; //offset = 312, size = 4
		String m_sLogString; //offset = 316, size = 12
		Int m_LogLineCount; //offset = 328, size = 4
		Bool m_bCopySaveGame: 1; //offset = 332, size = 4
		String m_sRemoteSaveLoc; //offset = 336, size = 12
		String m_sSaveExtension; //offset = 348, size = 12

		void GetMapName( String MapName, String parentMapName );
		void GetPlayerLocation( Float fX, Float fY, Float fZ );
		void TPMCheckinTestPlan();
		void TPMCheckoutTestPlan( Int nTestPlanID );
		void TRun( Int nResult );
		void TAdd( String sTestName, String sTestCaseString );
		void SendTPMMessage( String sMessage );
		void SendVocalizationEvent( Name SpeakerTag, Name Sound );
		String ShortName( Object* O );
		Int GetGameMode();
		Int GetSessionBuild();
		Int GetRunID();
		Int GetSessionID();
		Int GetSessionStatus();
		void SetFlag( Int nFlag, Bool bVal );
		void ToggleFlag( Int nFlag );
		Bool GetFlag( Int nFlag );
		void SkynetScreenshot( String sScreenshotName );
		void SendStatistic( String sStatisticName, String sOperationType, Float fData );
		void SendBugReport( Float fX, Float fY, Float fZ, Float fOrientation, Int nWeaponType, Int nWeaponMod, Int nArmourType, Int nArmourMod, String sPartyMember1, String sPartyMember2, Bool bIsPercievingEnemy, String sBugDescription, String sEmailAddress );
		void SendDebugEmail( String sEmailDestination, String sEmailSubject, Int nExceptionType, String sEmailBody );
		void SendCustomEventFloat( String sPacketHandler, Int nLogEventID, Float fX, Float fY, Float fZ, String sAreaName, String sNameObject, String sNameTarget, Float fData0, Float fData1, String sString1, String sString2, Int nObjectType, Bool bIsPartyMember );
		void SendCustomEvent( String sPacketHandler, Int nLogEventID, Float fX, Float fY, Float fZ, String sAreaName, String sNameObject, String sNameTarget, Int nIntVal1, Int nIntVal2, String sString1, String sString2, Int nObjectType, Bool bIsPartyMember );
		void SendEventFloat( Int nLogEventID, Float fX, Float fY, Float fZ, String sAreaName, String sNameObject, String sNameTarget, Float fData0, Float fData1, String sString1, String sString2, Int nObjectType, Int bIsPartyMember );
		void SendEvent( Int nLogEventID, Float fX, Float fY, Float fZ, String sAreaName, String sNameObject, String sNameTarget, Int nIntVal1, Int nIntVal2, String sString1, String sString2, Int nObjectType, Int bIsPartyMember );
		void SendPlayerEventFloat( Int nLogEventID, String sString1, String sString2, String sString3, String sString4, Float fData0, Float fData1, Int nInt3, Int nInt4 );
		void SendPlayerEvent( Int nLogEventID, String sString1, String sString2, String sString3, String sString4, Int nInt1, Int nInt2, Int nInt3, Int nInt4 );
		void SendMapEvent( Int nLogEventID, Vector pos, String sString1, String sString2, String sString3, String sString4, Int nInt1, Int nInt2, Int nInt3, Int nInt4 );
		void SendHardwareInfoMessage();
		void SendFPSTest();
		void SendTPMEvent( String sMessage );
		void SendAssertEvent( Int nLineNumber, String sAssertFileName, String sAssertMessage );
		void SendQAEvent( Int nMessageEventId, String sType, String sLogMsg, String sCurrentMessage );
		void SendInvalidPlaythrough( String sCheat );
		void SendLevelLoaded( String LevelName, Float fTime );
		void SendStrRefNotFound( Int nStrRef );
		void SendTextureMemorySacrificed( Int nOldTextureMemoryLimit );
		void SendPurpleLevel( String sObjRefName, String sObjLeakedName );
		BioRemoteLogger* GetLogger();
	};

	enum ERimLightControlType
	{
		RLCT_Key,
		RLCT_Camera,
	};

	enum EDLEStateType
	{
		DLEST_Default,
		DLEST_Cinematic,
	};

	class BioDynamicLightEnvironmentComponent: public DynamicLightEnvironmentComponent
	{
		DECLARE_PACKAGE_CLASS( BioDynamicLightEnvironmentComponent, DynamicLightEnvironmentComponent, Engine )

	public:

		Byte QualityType; //offset = 196, size = 1
		Byte RimLightControl; //offset = 197, size = 1
		Pointer BioState; //offset = 200, size = 4
		Float SHAmbientScale; //offset = 204, size = 4
		Bool LightAxisEnabled: 1; //offset = 208, size = 4
		Bool DisplayDebugLines: 1; //offset = 208, size = 4
		Bool ForcePolarKeyFill: 1; //offset = 208, size = 4
		Bool UseOptimizedLightingPath: 1; //offset = 208, size = 4
		Bool UseTargetBoneAsOrigin: 1; //offset = 208, size = 4
		Bool bLockEnvironment: 1; //offset = 208, size = 4
		Bool SmoothShadowLight_Cinematic: 1; //offset = 208, size = 4
		Bool SmoothShadowLight_Exploration: 1; //offset = 208, size = 4
		Float BlendTime; //offset = 212, size = 4
		Float PopAngleLimit; //offset = 216, size = 4
		Float SurfaceBoundsRatio; //offset = 220, size = 4
		Float MinPolarAngle; //offset = 224, size = 4
		Name TargetBoneName; //offset = 228, size = 8
		Float BouncedKeyLightingIntensity; //offset = 236, size = 4
		Float BouncedKeyLightingDesaturation; //offset = 240, size = 4
		Vector KeyLightScale; //offset = 244, size = 12
		Vector FillLightScale; //offset = 256, size = 12
		Vector AmbientLightScale; //offset = 268, size = 12
		Float RimLightYaw; //offset = 280, size = 4
		Float RimLightPitch; //offset = 284, size = 4
		Float RimLightScale; //offset = 288, size = 4
		LinearColor RimLightColour; //offset = 292, size = 16
		Color RimLightColor; //offset = 308, size = 4
		Float LastFrameWeight_Cinematic; //offset = 312, size = 4
		Float LastFrameWeight_Exploration; //offset = 316, size = 4

		void SetQuality( Byte Quality );
		void ResetInterpolation();
	};

	class SFXPointLightComponent: public PointLightComponent
	{
		DECLARE_PACKAGE_CLASS( SFXPointLightComponent, PointLightComponent, Engine )

	public:

		Bool bUseVSMShadows: 1; //offset = 500, size = 4
	};

	enum ESoundMode
	{
		SOUNDMODE_NORMAL,
		SOUNDMODE_SLOWMOTION,
		SOUNDMODE_DEATH,
		SOUNDMODE_COVER,
	};

	struct SoundGroupAdjuster
	{
		Name GroupName; //offset = 0, size = 8
		Float VolumeAdjuster; //offset = 8, size = 4
		Float PitchAdjuster; //offset = 12, size = 4
	};

	struct SoundGroupEffect
	{
		Array<SoundGroupAdjuster> GroupEffect; //offset = 0, size = 12
	};

	struct SoundGroupProperties
	{
		Float Volume; //offset = 0, size = 4
		Float Pitch; //offset = 4, size = 4
		Float VoiceCenterChannelVolume; //offset = 8, size = 4
		Float VoiceRadioVolume; //offset = 12, size = 4
		Bool bApplyEffects: 1; //offset = 16, size = 4
		Bool bAlwaysPlay: 1; //offset = 16, size = 4
		Bool bIsUISound: 1; //offset = 16, size = 4
		Bool bIsMusic: 1; //offset = 16, size = 4
		Bool bNoReverb: 1; //offset = 16, size = 4
	};

	struct SoundGroup
	{
		SoundGroupProperties Properties; //offset = 0, size = 20
		Name GroupName; //offset = 20, size = 8
		Array<Name> ChildGroupNames; //offset = 28, size = 12
	};

	struct ModeSettings
	{
		Byte Mode; //offset = 0, size = 1
		Float FadeTime; //offset = 4, size = 4
	};

	struct Listener
	{
		PortalVolume* PortalVolume; //offset = 0, size = 4
		Vector Location; //offset = 4, size = 12
		Vector Up; //offset = 16, size = 12
		Vector Right; //offset = 28, size = 12
		Vector Front; //offset = 40, size = 12
	};

	class AudioDevice: public Subsystem
	{
		DECLARE_PACKAGE_CLASS( AudioDevice, Subsystem, Engine )

	public:

		Int MaxChannels; //offset = 64, size = 4
		Bool UseEffectsProcessing: 1; //offset = 68, size = 4
		Bool bGameWasTicking: 1; //offset = 68, size = 4
		Bool m_bTriggerPriorityList: 1; //offset = 68, size = 4
		Bool m_bOcclusionEnabled: 1; //offset = 68, size = 4
		Bool m_bGameMusicDisabledByXBox: 1; //offset = 68, size = 4
		Bool bTestLowPassFilter: 1; //offset = 68, size = 4
		Bool bTestEQFilter: 1; //offset = 68, size = 4
		Array<AudioComponent*> AudioComponents; //offset = 72, size = 12
		Array<Pointer> Sources; //offset = 84, size = 12
		Array<Pointer> FreeSources; //offset = 96, size = 12
		DynamicMap_Mirror WaveInstanceSourceMap; //offset = 108, size = 28
		Array<Listener> Listeners; //offset = 136, size = 12
		QWord CurrentTick; //offset = 148, size = 8
		Map_Mirror NameToSoundGroupIndexMap; //offset = 156, size = 20
		Array<SoundGroup> SourceSoundGroups; //offset = 176, size = 12
		Array<SoundGroup> CurrentSoundGroups; //offset = 188, size = 12
		Array<SoundGroup> DestinationSoundGroups; //offset = 200, size = 12
		Array<SoundGroup> SoundGroups; //offset = 212, size = 12
		Array<SoundGroupEffect> SoundGroupEffects; //offset = 224, size = 12
		Int bForcePause; //offset = 236, size = 4
		ReverbSettings m_ReverbSettings_Override; //offset = 240, size = 12
		Pointer Effects; //offset = 252, size = 4
		Byte CurrentMode; //offset = 256, size = 1
		Double SoundModeStartTime; //offset = 260, size = 8
		Double SoundModeEndTime; //offset = 268, size = 8
		Pointer TextToSpeech; //offset = 276, size = 4
		Float TransientMasterVolume; //offset = 280, size = 4
	};

	class LocalMessage: public Object
	{
		DECLARE_PACKAGE_CLASS( LocalMessage, Object, Engine )

	public:

		Bool bIsSpecial: 1; //offset = 60, size = 4
		Bool bIsUnique: 1; //offset = 60, size = 4
		Bool bIsPartiallyUnique: 1; //offset = 60, size = 4
		Bool bIsConsoleMessage: 1; //offset = 60, size = 4
		Bool bBeep: 1; //offset = 60, size = 4
		Bool bCountInstances: 1; //offset = 60, size = 4
		Float Lifetime; //offset = 64, size = 4
		Color DrawColor; //offset = 68, size = 4
		Float PosY; //offset = 72, size = 4
		Int FontSize; //offset = 76, size = 4

		Bool PartiallyDuplicates( Int Switch1, Int Switch2, Object* OptionalObject1, Object* OptionalObject2 );
		Bool IsKeyObjectiveMessage( Int Switch );
		Bool IsConsoleMessage( Int Switch );
		Float GetLifeTime( Int Switch );
		Int GetFontSize( Int Switch, PlayerReplicationInfo* RelatedPRI1, PlayerReplicationInfo* RelatedPRI2, PlayerReplicationInfo* LocalPlayer );
		Float GetPos( Int Switch, HUD* myHUD );
		Color GetColor( Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject );
		Color GetConsoleColor( PlayerReplicationInfo* RelatedPRI );
		String GetString( Int Switch, Bool bPRI1HUD, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject );
		void ClientReceive( PlayerController* P, Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject, String MessageString );
	};

	class SFXModule_DamageBase: public SFXModule
	{
		DECLARE_PACKAGE_CLASS( SFXModule_DamageBase, SFXModule, Engine )

	public:

		void SFXTakeRadiusDamage( Float Damage, Float DamageRadius, Bool bFullDamage, Vector HurtOrigin, Float Momentum, Class* DamageType, Controller* InstigatedBy, Actor* DamageCauser );
		void SFXTakeDamage( Float Damage, TraceHitInfo HitInfo, Vector HitLocation, Vector Momentum, Class* DamageType, Controller* InstigatedBy, Actor* DamageCauser );
	};

	class SeqEvent_TakeDamage: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_TakeDamage, SequenceEvent, Engine )

	public:

		Float MinDamageAmount; //offset = 280, size = 4
		Float DamageThreshold; //offset = 284, size = 4
		Array<Class*> DamageTypes; //offset = 288, size = 12
		Array<Class*> IgnoreDamageTypes; //offset = 300, size = 12
		Float CurrentDamage; //offset = 312, size = 4
		Vector vHitLocation; //offset = 316, size = 12
		Actor* oDamagedActor; //offset = 328, size = 4

		void Reset();
		void HandleDamage( Actor* InOriginator, Actor* InInstigator, Class* inDamageType, Float inAmount, Vector inHitLocation, Actor* DamageCauser, SeqVar_Float* FloatVar, SeqVar_Vector* VectorVar, Bool bAlreadyActivatedThisTick );
		Bool IsValidDamageType( Class* inDamageType, Int idx, Bool bValidDamageType );
	};

	class SeqAct_Destroy: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Destroy, SequenceAction, Engine )

	public:
	};

	class SeqAct_HealDamage: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_HealDamage, SequenceAction, Engine )

	public:

		Class* DamageType; //offset = 240, size = 4
		Int HealAmount; //offset = 244, size = 4
		Actor* Instigator; //offset = 248, size = 4
	};

	class SeqAct_Teleport: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_Teleport, SequenceAction, Engine )

	public:

		Bool bUpdateRotation: 1; //offset = 240, size = 4
		Bool m_bPreserveVelocity: 1; //offset = 240, size = 4
	};

	class SeqAct_ChangeCollision: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ChangeCollision, SequenceAction, Engine )

	public:

		Bool bCollideActors: 1; //offset = 240, size = 4
		Bool bBlockActors: 1; //offset = 240, size = 4
		Bool bIgnoreEncroachers: 1; //offset = 240, size = 4
	};

	class SeqAct_ToggleHidden: public SeqAct_Toggle
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ToggleHidden, SeqAct_Toggle, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_AttachToActor: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_AttachToActor, SequenceAction, Engine )

	public:

		Bool bDetach: 1; //offset = 240, size = 4
		Bool bHardAttach: 1; //offset = 240, size = 4
		Bool bUseRelativeOffset: 1; //offset = 240, size = 4
		Bool bUseRelativeRotation: 1; //offset = 240, size = 4
		Name BoneName; //offset = 244, size = 8
		Vector RelativeOffset; //offset = 252, size = 12
		Rotator RelativeRotation; //offset = 264, size = 12
	};

	class SeqAct_MakeNoise: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_MakeNoise, SequenceAction, Engine )

	public:

		Float Loudness; //offset = 240, size = 4
	};

	class AccessControl: public Info
	{
		DECLARE_PACKAGE_CLASS( AccessControl, Info, Engine )

	public:

		Array<String> IPPolicies; //offset = 508, size = 12
		Array<UniqueNetId> BannedIDs; //offset = 520, size = 12
		String IPBanned; //offset = 532, size = 12
		String WrongPassword; //offset = 544, size = 12
		String NeedPassword; //offset = 556, size = 12
		String SessionBanned; //offset = 568, size = 12
		String KickedMsg; //offset = 580, size = 12
		String DefaultKickReason; //offset = 592, size = 12
		String IdleKickReason; //offset = 604, size = 12
		Class* AdminClass; //offset = 616, size = 4
		String AdminPassword; //offset = 620, size = 12
		String GamePassword; //offset = 632, size = 12
		String ACDisplayText[3]; //offset = 644, size = 12
		String ACDescText[3]; //offset = 680, size = 12
		Bool bDontAddDefaultAdmin: 1; //offset = 716, size = 4

		Bool IsIDBanned( UniqueNetId NetID, Int I );
		Bool CheckIPPolicy( String Address, Int I, Int J, String Policy, String Mask, Bool bAcceptAddress, Bool bAcceptPolicy );
		void PreLogin( String Options, String Address, String OutError, Bool bSpectator, String InPassword );
		Bool ValidLogin( String UserName, String Password );
		Bool ParseAdminOptions( String Options, String InAdminName, String InPassword );
		void AdminExited( PlayerController* P, String LogoutString );
		void AdminEntered( PlayerController* P, String LoginString );
		Bool AdminLogout( PlayerController* P );
		Bool AdminLogin( PlayerController* P, String Password );
		Bool KickPlayer( PlayerController* C, String KickReason );
		void KickBan( String S, PlayerController* P, String IP );
		void Kick( String S, Controller* C );
		Bool RequiresPassword();
		void SetGamePassword( String P );
		Bool SetAdminPassword( String P );
		Bool IsAdmin( PlayerController* P );
	};

	class Admin: public PlayerController
	{
		DECLARE_PACKAGE_CLASS( Admin, PlayerController, Engine )

	public:

		void ServerSwitch( String URL );
		void Switch( String URL );
		void ServerRestartMap();
		void RestartMap();
		void PlayerList( PlayerReplicationInfo* PRI );
		void ServerKick( String S );
		void Kick( String S );
		void ServerKickBan( String S );
		void KickBan( String S );
		void ServerAdmin( String CommandLine, String Result );
		void Admin( String CommandLine );
		void PostBeginPlay();
	};

	class OnlineNewsInterface: public Interface
	{
		DECLARE_PACKAGE_CLASS( OnlineNewsInterface, Interface, Engine )

	public:

		__OnReadGameNewsCompleted__Delegate __OnReadGameNewsCompleted__Delegate; //offset = 60, size = 12
		__OnReadContentAnnouncementsCompleted__Delegate __OnReadContentAnnouncementsCompleted__Delegate; //offset = 72, size = 12

		String GetContentAnnouncements( Byte LocalUserNum );
		void ClearReadContentAnnouncementsCompletedDelegate( ReadContentAnnouncementsDelegate ReadContentAnnouncementsDelegate );
		void AddReadContentAnnouncementsCompletedDelegate( ReadContentAnnouncementsDelegate ReadContentAnnouncementsDelegate );
		void OnReadContentAnnouncementsCompleted( Bool bWasSuccessful );
		Bool ReadContentAnnouncements( Byte LocalUserNum );
		String GetGameNews( Byte LocalUserNum );
		void ClearReadGameNewsCompletedDelegate( ReadGameNewsDelegate ReadGameNewsDelegate );
		void AddReadGameNewsCompletedDelegate( ReadGameNewsDelegate ReadGameNewsDelegate );
		void OnReadGameNewsCompleted( Bool bWasSuccessful );
		Bool ReadGameNews( Byte LocalUserNum );
	};

	class OnlineStatsInterface: public Interface
	{
		DECLARE_PACKAGE_CLASS( OnlineStatsInterface, Interface, Engine )

	public:

		__OnReadOnlineStatsComplete__Delegate __OnReadOnlineStatsComplete__Delegate; //offset = 60, size = 12
		__OnFlushOnlineStatsComplete__Delegate __OnFlushOnlineStatsComplete__Delegate; //offset = 72, size = 12
		__OnRegisterHostStatGuidComplete__Delegate __OnRegisterHostStatGuidComplete__Delegate; //offset = 84, size = 12

		Bool RegisterStatGuid( UniqueNetId PlayerID, String ClientStatGuid );
		String GetClientStatGuid();
		void ClearRegisterHostStatGuidCompleteDelegateDelegate( RegisterHostStatGuidCompleteDelegate RegisterHostStatGuidCompleteDelegate );
		void AddRegisterHostStatGuidCompleteDelegate( RegisterHostStatGuidCompleteDelegate RegisterHostStatGuidCompleteDelegate );
		void OnRegisterHostStatGuidComplete( Bool bWasSuccessful );
		Bool RegisterHostStatGuid( String HostStatGuid );
		String GetHostStatGuid();
		Bool WriteOnlinePlayerScores( Array<OnlinePlayerScore> PlayerScores );
		void ClearFlushOnlineStatsCompleteDelegate( FlushOnlineStatsCompleteDelegate FlushOnlineStatsCompleteDelegate );
		void AddFlushOnlineStatsCompleteDelegate( FlushOnlineStatsCompleteDelegate FlushOnlineStatsCompleteDelegate );
		void OnFlushOnlineStatsComplete( Bool bWasSuccessful );
		Bool FlushOnlineStats();
		Bool WriteOnlineStats( UniqueNetId Player, OnlineStatsWrite* StatsWrite );
		void FreeStats( OnlineStatsRead* StatsRead );
		void OnReadOnlineStatsComplete( Bool bWasSuccessful );
		void ClearReadOnlineStatsCompleteDelegate( ReadOnlineStatsCompleteDelegate ReadOnlineStatsCompleteDelegate );
		void AddReadOnlineStatsCompleteDelegate( ReadOnlineStatsCompleteDelegate ReadOnlineStatsCompleteDelegate );
		Bool ReadOnlineStatsByRankAroundPlayer( Byte LocalUserNum, OnlineStatsRead* StatsRead, Int NumRows );
		Bool ReadOnlineStatsByRank( OnlineStatsRead* StatsRead, Int StartIndex, Int NumToRead );
		Bool ReadOnlineStatsForFriends( Byte LocalUserNum, OnlineStatsRead* StatsRead );
		Bool ReadOnlineStats( Array<UniqueNetId> Players, OnlineStatsRead* StatsRead );
	};

	class OnlineVoiceInterface: public Interface
	{
		DECLARE_PACKAGE_CLASS( OnlineVoiceInterface, Interface, Engine )

	public:

		__OnPlayerTalking__Delegate __OnPlayerTalking__Delegate; //offset = 60, size = 12
		__OnRecognitionComplete__Delegate __OnRecognitionComplete__Delegate; //offset = 72, size = 12

		Bool UnmuteAll( Byte LocalUserNum );
		Bool MuteAll( Byte LocalUserNum, Bool bAllowFriends );
		Bool SetSpeechRecognitionObject( Byte LocalUserNum, SpeechRecognition* SpeechRecogObj );
		Bool SelectVocabulary( Byte LocalUserNum, Int VocabularyId );
		void ClearRecognitionCompleteDelegate( Byte LocalUserNum, RecognitionDelegate RecognitionDelegate );
		void AddRecognitionCompleteDelegate( Byte LocalUserNum, RecognitionDelegate RecognitionDelegate );
		void OnRecognitionComplete();
		Bool GetRecognitionResults( Byte LocalUserNum, Array<SpeechRecognizedWord> Words );
		Bool StopSpeechRecognition( Byte LocalUserNum );
		Bool StartSpeechRecognition( Byte LocalUserNum );
		void StopNetworkedVoice( Byte LocalUserNum );
		void StartNetworkedVoice( Byte LocalUserNum );
		void ClearPlayerTalkingDelegate( TalkerDelegate TalkerDelegate );
		void AddPlayerTalkingDelegate( TalkerDelegate TalkerDelegate );
		void OnPlayerTalking( UniqueNetId Player );
		Bool UnmuteRemoteTalker( Byte LocalUserNum, UniqueNetId PlayerID );
		Bool MuteRemoteTalker( Byte LocalUserNum, UniqueNetId PlayerID );
		Bool SetRemoteTalkerPriority( Byte LocalUserNum, UniqueNetId PlayerID, Int Priority );
		Bool IsHeadsetPresent( Byte LocalUserNum );
		Bool IsRemotePlayerTalking( UniqueNetId PlayerID );
		Bool IsLocalPlayerTalking( Byte LocalUserNum );
		Bool UnregisterRemoteTalker( UniqueNetId PlayerID );
		Bool RegisterRemoteTalker( UniqueNetId PlayerID );
		Bool UnregisterLocalTalker( Byte LocalUserNum );
		Bool RegisterLocalTalker( Byte LocalUserNum );
	};

	class OnlineContentInterface: public Interface
	{
		DECLARE_PACKAGE_CLASS( OnlineContentInterface, Interface, Engine )

	public:

		__OnContentChange__Delegate __OnContentChange__Delegate; //offset = 60, size = 12
		__OnReadContentComplete__Delegate __OnReadContentComplete__Delegate; //offset = 72, size = 12
		__OnQueryAvailableDownloadsComplete__Delegate __OnQueryAvailableDownloadsComplete__Delegate; //offset = 84, size = 12

		void GetAvailableDownloadCounts( Byte LocalUserNum, Int NewDownloads, Int TotalDownloads );
		void ClearQueryAvailableDownloadsComplete( Byte LocalUserNum, QueryDownloadsDelegate QueryDownloadsDelegate );
		void AddQueryAvailableDownloadsComplete( Byte LocalUserNum, QueryDownloadsDelegate QueryDownloadsDelegate );
		void OnQueryAvailableDownloadsComplete( Bool bWasSuccessful );
		Bool QueryAvailableDownloads( Byte LocalUserNum );
		Byte GetContentList( Byte LocalUserNum, Array<OnlineContent> ContentList );
		Bool ReadContentList( Byte LocalUserNum );
		void ClearReadContentComplete( Byte LocalUserNum, ReadContentCompleteDelegate ReadContentCompleteDelegate );
		void AddReadContentComplete( Byte LocalUserNum, ReadContentCompleteDelegate ReadContentCompleteDelegate );
		void OnReadContentComplete( Bool bWasSuccessful );
		void ClearContentChangeDelegate( ContentDelegate ContentDelegate, Byte LocalUserNum );
		void AddContentChangeDelegate( ContentDelegate ContentDelegate, Byte LocalUserNum );
		void OnContentChange();
	};

	class OnlineGameInterface: public Interface
	{
		DECLARE_PACKAGE_CLASS( OnlineGameInterface, Interface, Engine )

	public:

		__OnCreateOnlineGameComplete__Delegate __OnCreateOnlineGameComplete__Delegate; //offset = 60, size = 12
		__OnDestroyOnlineGameComplete__Delegate __OnDestroyOnlineGameComplete__Delegate; //offset = 72, size = 12
		__OnFindOnlineGamesComplete__Delegate __OnFindOnlineGamesComplete__Delegate; //offset = 84, size = 12
		__OnCancelFindOnlineGamesComplete__Delegate __OnCancelFindOnlineGamesComplete__Delegate; //offset = 96, size = 12
		__OnJoinOnlineGameComplete__Delegate __OnJoinOnlineGameComplete__Delegate; //offset = 108, size = 12
		__OnRegisterPlayerComplete__Delegate __OnRegisterPlayerComplete__Delegate; //offset = 120, size = 12
		__OnUnregisterPlayerComplete__Delegate __OnUnregisterPlayerComplete__Delegate; //offset = 132, size = 12
		__OnStartOnlineGameComplete__Delegate __OnStartOnlineGameComplete__Delegate; //offset = 144, size = 12
		__OnEndOnlineGameComplete__Delegate __OnEndOnlineGameComplete__Delegate; //offset = 156, size = 12
		__OnArbitrationRegistrationComplete__Delegate __OnArbitrationRegistrationComplete__Delegate; //offset = 168, size = 12
		__OnGameInviteAccepted__Delegate __OnGameInviteAccepted__Delegate; //offset = 180, size = 12

		Bool RecalculateSkillRating( Array<UniqueNetId> Players );
		Bool AcceptGameInvite( Byte LocalUserNum );
		void OnGameInviteAccepted( OnlineGameSettings* GameInviteSettings );
		void ClearGameInviteAcceptedDelegate( Byte LocalUserNum, GameInviteAcceptedDelegate GameInviteAcceptedDelegate );
		void AddGameInviteAcceptedDelegate( Byte LocalUserNum, GameInviteAcceptedDelegate GameInviteAcceptedDelegate );
		Array<OnlineArbitrationRegistrant> GetArbitratedPlayers();
		void ClearArbitrationRegistrationCompleteDelegate( ArbitrationRegistrationCompleteDelegate ArbitrationRegistrationCompleteDelegate );
		void AddArbitrationRegistrationCompleteDelegate( ArbitrationRegistrationCompleteDelegate ArbitrationRegistrationCompleteDelegate );
		void OnArbitrationRegistrationComplete( Bool bWasSuccessful );
		Bool RegisterForArbitration();
		Byte GetOnlineGameState();
		void ClearEndOnlineGameCompleteDelegate( EndOnlineGameCompleteDelegate EndOnlineGameCompleteDelegate );
		void AddEndOnlineGameCompleteDelegate( EndOnlineGameCompleteDelegate EndOnlineGameCompleteDelegate );
		void OnEndOnlineGameComplete( Bool bWasSuccessful );
		Bool EndOnlineGame();
		void ClearStartOnlineGameCompleteDelegate( StartOnlineGameCompleteDelegate StartOnlineGameCompleteDelegate );
		void AddStartOnlineGameCompleteDelegate( StartOnlineGameCompleteDelegate StartOnlineGameCompleteDelegate );
		void OnStartOnlineGameComplete( Bool bWasSuccessful );
		Bool StartOnlineGame();
		void ClearUnregisterPlayerCompleteDelegate( UnregisterPlayerCompleteDelegate UnregisterPlayerCompleteDelegate );
		void AddUnregisterPlayerCompleteDelegate( UnregisterPlayerCompleteDelegate UnregisterPlayerCompleteDelegate );
		void OnUnregisterPlayerComplete( Bool bWasSuccessful );
		Bool UnregisterPlayer( UniqueNetId PlayerID );
		void ClearRegisterPlayerCompleteDelegate( RegisterPlayerCompleteDelegate RegisterPlayerCompleteDelegate );
		void AddRegisterPlayerCompleteDelegate( RegisterPlayerCompleteDelegate RegisterPlayerCompleteDelegate );
		void OnRegisterPlayerComplete( Bool bWasSuccessful );
		Bool RegisterPlayer( UniqueNetId PlayerID, Bool bWasInvited );
		Bool GetResolvedConnectString( String ConnectInfo );
		void ClearJoinOnlineGameCompleteDelegate( JoinOnlineGameCompleteDelegate JoinOnlineGameCompleteDelegate );
		void AddJoinOnlineGameCompleteDelegate( JoinOnlineGameCompleteDelegate JoinOnlineGameCompleteDelegate );
		void OnJoinOnlineGameComplete( Bool bWasSuccessful );
		Bool JoinOnlineGame( Byte PlayerNum, OnlineGameSearchResult DesiredGame );
		Bool FreeSearchResults( OnlineGameSearch* Search );
		OnlineGameSearch* GetGameSearch();
		void ClearCancelFindOnlineGamesCompleteDelegate( CancelFindOnlineGamesCompleteDelegate CancelFindOnlineGamesCompleteDelegate );
		void AddCancelFindOnlineGamesCompleteDelegate( CancelFindOnlineGamesCompleteDelegate CancelFindOnlineGamesCompleteDelegate );
		void OnCancelFindOnlineGamesComplete( Bool bWasSuccessful );
		Bool CancelFindOnlineGames();
		void ClearFindOnlineGamesCompleteDelegate( FindOnlineGamesCompleteDelegate FindOnlineGamesCompleteDelegate );
		void AddFindOnlineGamesCompleteDelegate( FindOnlineGamesCompleteDelegate FindOnlineGamesCompleteDelegate );
		void OnFindOnlineGamesComplete( Bool bWasSuccessful );
		Bool FindOnlineGames( Byte SearchingPlayerNum, OnlineGameSearch* SearchSettings );
		void ClearDestroyOnlineGameCompleteDelegate( DestroyOnlineGameCompleteDelegate DestroyOnlineGameCompleteDelegate );
		void AddDestroyOnlineGameCompleteDelegate( DestroyOnlineGameCompleteDelegate DestroyOnlineGameCompleteDelegate );
		void OnDestroyOnlineGameComplete( Bool bWasSuccessful );
		Bool DestroyOnlineGame();
		OnlineGameSettings* GetGameSettings();
		Bool UpdateOnlineGame( OnlineGameSettings* UpdatedGameSettings );
		void ClearCreateOnlineGameCompleteDelegate( CreateOnlineGameCompleteDelegate CreateOnlineGameCompleteDelegate );
		void AddCreateOnlineGameCompleteDelegate( CreateOnlineGameCompleteDelegate CreateOnlineGameCompleteDelegate );
		void OnCreateOnlineGameComplete( Bool bWasSuccessful );
		Bool CreateOnlineGame( Byte HostingPlayerNum, OnlineGameSettings* NewGameSettings );
	};

	class OnlineSystemInterface: public Interface
	{
		DECLARE_PACKAGE_CLASS( OnlineSystemInterface, Interface, Engine )

	public:

		__OnLinkStatusChange__Delegate __OnLinkStatusChange__Delegate; //offset = 60, size = 12
		__OnExternalUIChange__Delegate __OnExternalUIChange__Delegate; //offset = 72, size = 12
		__OnControllerChange__Delegate __OnControllerChange__Delegate; //offset = 84, size = 12
		__OnConnectionStatusChange__Delegate __OnConnectionStatusChange__Delegate; //offset = 96, size = 12
		__OnStorageDeviceChange__Delegate __OnStorageDeviceChange__Delegate; //offset = 108, size = 12

		void ClearStorageDeviceChangeDelegate( StorageDeviceChangeDelegate StorageDeviceChangeDelegate );
		void AddStorageDeviceChangeDelegate( StorageDeviceChangeDelegate StorageDeviceChangeDelegate );
		void OnStorageDeviceChange();
		Byte GetNATType();
		void ClearConnectionStatusChangeDelegate( ConnectionStatusDelegate ConnectionStatusDelegate );
		void AddConnectionStatusChangeDelegate( ConnectionStatusDelegate ConnectionStatusDelegate );
		void OnConnectionStatusChange( Byte ConnectionStatus );
		Bool IsControllerConnected( Int ControllerId );
		void ClearControllerChangeDelegate( ControllerChangeDelegate ControllerChangeDelegate );
		void AddControllerChangeDelegate( ControllerChangeDelegate ControllerChangeDelegate );
		void OnControllerChange( Int ControllerId, Bool bIsConnected );
		void SetNetworkNotificationPosition( Byte NewPos );
		Byte GetNetworkNotificationPosition();
		void ClearExternalUIChangeDelegate( ExternalUIDelegate ExternalUIDelegate );
		void AddExternalUIChangeDelegate( ExternalUIDelegate ExternalUIDelegate );
		void OnExternalUIChange( Bool bIsOpening );
		void ClearLinkStatusChangeDelegate( LinkStatusDelegate LinkStatusDelegate );
		void AddLinkStatusChangeDelegate( LinkStatusDelegate LinkStatusDelegate );
		void OnLinkStatusChange( Bool bIsConnected );
		Bool HasLinkConnection();
	};

	class OnlinePlayerInterfaceEx: public Interface
	{
		DECLARE_PACKAGE_CLASS( OnlinePlayerInterfaceEx, Interface, Engine )

	public:

		__OnDeviceSelectionComplete__Delegate __OnDeviceSelectionComplete__Delegate; //offset = 60, size = 12
		__OnUnlockAchievementComplete__Delegate __OnUnlockAchievementComplete__Delegate; //offset = 72, size = 12
		__OnProfileDataChanged__Delegate __OnProfileDataChanged__Delegate; //offset = 84, size = 12
		__OnReadAchievementsComplete__Delegate __OnReadAchievementsComplete__Delegate; //offset = 96, size = 12

		Byte GetAchievements( Byte LocalUserNum, Array<AchievementDetails> Achievements, Int TitleId );
		void ClearReadAchievementsCompleteDelegate( Byte LocalUserNum, ReadAchievementsCompleteDelegate ReadAchievementsCompleteDelegate );
		void AddReadAchievementsCompleteDelegate( Byte LocalUserNum, ReadAchievementsCompleteDelegate ReadAchievementsCompleteDelegate );
		void OnReadAchievementsComplete( Int TitleId );
		Bool ReadAchievements( Byte LocalUserNum, Int TitleId, Bool bShouldReadText, Bool bShouldReadImages );
		Bool ShowPlayersUI( Byte LocalUserNum );
		Bool ShowFriendsInviteUI( Byte LocalUserNum, UniqueNetId PlayerID );
		void ClearProfileDataChangedDelegate( Byte LocalUserNum, ProfileDataChangedDelegate ProfileDataChangedDelegate );
		void AddProfileDataChangedDelegate( Byte LocalUserNum, ProfileDataChangedDelegate ProfileDataChangedDelegate );
		void OnProfileDataChanged();
		Bool UnlockGamerPicture( Byte LocalUserNum, Int PictureId );
		void OnUnlockAchievementComplete( Bool bWasSuccessful );
		void ClearUnlockAchievementCompleteDelegate( Byte LocalUserNum, UnlockAchievementCompleteDelegate UnlockAchievementCompleteDelegate );
		void AddUnlockAchievementCompleteDelegate( Byte LocalUserNum, UnlockAchievementCompleteDelegate UnlockAchievementCompleteDelegate );
		Bool UnlockAchievement( Byte LocalUserNum, Int AchievementId );
		Bool IsDeviceValid( Int DeviceID, Int SizeNeeded );
		void OnDeviceSelectionComplete( Bool bWasSuccessful );
		Int GetDeviceSelectionResults( Byte LocalUserNum, String DeviceName );
		void ClearDeviceSelectionDoneDelegate( Byte LocalUserNum, DeviceDelegate DeviceDelegate );
		void AddDeviceSelectionDoneDelegate( Byte LocalUserNum, DeviceDelegate DeviceDelegate );
		Bool ShowDeviceSelectionUI( Byte LocalUserNum, Int SizeNeeded, Bool bForceShowUI, Bool bManageStorage );
		Bool ShowMembershipMarketplaceUI( Byte LocalUserNum );
		Bool ShowContentMarketplaceUI( Byte LocalUserNum );
		Bool ShowInviteUI( Byte LocalUserNum, String InviteText );
		Bool ShowAchievementsUI( Byte LocalUserNum );
		Bool ShowMessagesUI( Byte LocalUserNum );
		Bool ShowGamerCardUI( Byte LocalUserNum, UniqueNetId PlayerID );
		Bool ShowFeedbackUI( Byte LocalUserNum, UniqueNetId PlayerID );
	};

	class OnlinePlayerInterface: public Interface
	{
		DECLARE_PACKAGE_CLASS( OnlinePlayerInterface, Interface, Engine )

	public:

		__OnLoginChange__Delegate __OnLoginChange__Delegate; //offset = 60, size = 12
		__OnLoginCancelled__Delegate __OnLoginCancelled__Delegate; //offset = 72, size = 12
		__OnMutingChange__Delegate __OnMutingChange__Delegate; //offset = 84, size = 12
		__OnFriendsChange__Delegate __OnFriendsChange__Delegate; //offset = 96, size = 12
		__OnLoginFailed__Delegate __OnLoginFailed__Delegate; //offset = 108, size = 12
		__OnLogoutCompleted__Delegate __OnLogoutCompleted__Delegate; //offset = 120, size = 12
		__OnReadProfileSettingsComplete__Delegate __OnReadProfileSettingsComplete__Delegate; //offset = 132, size = 12
		__OnWriteProfileSettingsComplete__Delegate __OnWriteProfileSettingsComplete__Delegate; //offset = 144, size = 12
		__OnReadFriendsComplete__Delegate __OnReadFriendsComplete__Delegate; //offset = 156, size = 12
		__OnKeyboardInputComplete__Delegate __OnKeyboardInputComplete__Delegate; //offset = 168, size = 12
		__OnAddFriendByNameComplete__Delegate __OnAddFriendByNameComplete__Delegate; //offset = 180, size = 12
		__OnFriendInviteReceived__Delegate __OnFriendInviteReceived__Delegate; //offset = 192, size = 12
		__OnReceivedGameInvite__Delegate __OnReceivedGameInvite__Delegate; //offset = 204, size = 12
		__OnJoinFriendGameComplete__Delegate __OnJoinFriendGameComplete__Delegate; //offset = 216, size = 12
		__OnFriendMessageReceived__Delegate __OnFriendMessageReceived__Delegate; //offset = 228, size = 12

		Bool DeleteMessage( Byte LocalUserNum, Int MessageIndex );
		void ClearFriendMessageReceivedDelegate( Byte LocalUserNum, MessageDelegate MessageDelegate );
		void AddFriendMessageReceivedDelegate( Byte LocalUserNum, MessageDelegate MessageDelegate );
		void OnFriendMessageReceived( Byte LocalUserNum, UniqueNetId SendingPlayer, String SendingNick, String Message );
		void GetFriendMessages( Byte LocalUserNum, Array<OnlineFriendMessage> FriendMessages );
		void ClearJoinFriendGameCompleteDelegate( JoinFriendGameCompleteDelegate JoinFriendGameCompleteDelegate );
		void AddJoinFriendGameCompleteDelegate( JoinFriendGameCompleteDelegate JoinFriendGameCompleteDelegate );
		void OnJoinFriendGameComplete( Bool bWasSuccessful );
		Bool JoinFriendGame( Byte LocalUserNum, UniqueNetId Friend );
		void ClearReceivedGameInviteDelegate( Byte LocalUserNum, ReceivedGameInviteDelegate ReceivedGameInviteDelegate );
		void AddReceivedGameInviteDelegate( Byte LocalUserNum, ReceivedGameInviteDelegate ReceivedGameInviteDelegate );
		void OnReceivedGameInvite( Byte LocalUserNum, String InviterName );
		Bool SendGameInviteToFriends( Byte LocalUserNum, Array<UniqueNetId> Friends, String Text );
		Bool SendGameInviteToFriend( Byte LocalUserNum, UniqueNetId Friend, String Text );
		Bool SendMessageToFriend( Byte LocalUserNum, UniqueNetId Friend, String Message );
		void ClearFriendInviteReceivedDelegate( Byte LocalUserNum, InviteDelegate InviteDelegate );
		void AddFriendInviteReceivedDelegate( Byte LocalUserNum, InviteDelegate InviteDelegate );
		void OnFriendInviteReceived( Byte LocalUserNum, UniqueNetId RequestingPlayer, String RequestingNick, String Message );
		Bool RemoveFriend( Byte LocalUserNum, UniqueNetId FormerFriend );
		Bool DenyFriendInvite( Byte LocalUserNum, UniqueNetId RequestingPlayer );
		Bool AcceptFriendInvite( Byte LocalUserNum, UniqueNetId RequestingPlayer );
		void ClearAddFriendByNameCompleteDelegate( Byte LocalUserNum, FriendDelegate FriendDelegate );
		void AddAddFriendByNameCompleteDelegate( Byte LocalUserNum, FriendDelegate FriendDelegate );
		void OnAddFriendByNameComplete( Bool bWasSuccessful );
		Bool AddFriendByName( Byte LocalUserNum, String FriendName, String Message );
		Bool AddFriend( Byte LocalUserNum, UniqueNetId NewFriend, String Message );
		void OnKeyboardInputComplete( Bool bWasSuccessful );
		String GetKeyboardInputResults( Byte bWasCanceled );
		void ClearKeyboardInputDoneDelegate( InputDelegate InputDelegate );
		void AddKeyboardInputDoneDelegate( InputDelegate InputDelegate );
		Bool ShowKeyboardUI( Byte LocalUserNum, String TitleText, String DescriptionText, Bool bIsPassword, Bool bShouldValidate, String DefaultText, Int MaxResultLength );
		void SetOnlineStatus( Byte LocalUserNum, Int StatusId, Array<LocalizedStringSetting> LocalizedStringSettings, Array<SettingsProperty> Properties );
		Byte GetFriendsList( Byte LocalUserNum, Array<OnlineFriend> Friends, Int Count, Int StartingAt );
		void ClearReadFriendsCompleteDelegate( Byte LocalUserNum, ReadFriendsCompleteDelegate ReadFriendsCompleteDelegate );
		void AddReadFriendsCompleteDelegate( Byte LocalUserNum, ReadFriendsCompleteDelegate ReadFriendsCompleteDelegate );
		void OnReadFriendsComplete( Bool bWasSuccessful );
		Bool ReadFriendsList( Byte LocalUserNum, Int Count, Int StartingAt );
		void ClearWriteProfileSettingsCompleteDelegate( Byte LocalUserNum, WriteProfileSettingsCompleteDelegate WriteProfileSettingsCompleteDelegate );
		void AddWriteProfileSettingsCompleteDelegate( Byte LocalUserNum, WriteProfileSettingsCompleteDelegate WriteProfileSettingsCompleteDelegate );
		void OnWriteProfileSettingsComplete( Byte LocalUserNum, Bool bWasSuccessful );
		Bool WriteProfileSettings( Byte LocalUserNum, OnlineProfileSettings* ProfileSettings );
		OnlineProfileSettings* GetProfileSettings( Byte LocalUserNum );
		void ClearReadProfileSettingsCompleteDelegate( Byte LocalUserNum, ReadProfileSettingsCompleteDelegate ReadProfileSettingsCompleteDelegate );
		void AddReadProfileSettingsCompleteDelegate( Byte LocalUserNum, ReadProfileSettingsCompleteDelegate ReadProfileSettingsCompleteDelegate );
		void OnReadProfileSettingsComplete( Byte LocalUserNum, Bool bWasSuccessful );
		Bool ReadProfileSettings( Byte LocalUserNum, OnlineProfileSettings* ProfileSettings );
		void ClearFriendsChangeDelegate( Byte LocalUserNum, FriendsDelegate FriendsDelegate );
		void AddFriendsChangeDelegate( Byte LocalUserNum, FriendsDelegate FriendsDelegate );
		void ClearMutingChangeDelegate( MutingDelegate MutingDelegate );
		void AddMutingChangeDelegate( MutingDelegate MutingDelegate );
		void ClearLoginCancelledDelegate( CancelledDelegate CancelledDelegate );
		void AddLoginCancelledDelegate( CancelledDelegate CancelledDelegate );
		void ClearLoginChangeDelegate( LoginDelegate LoginDelegate, Byte LocalUserNum );
		void AddLoginChangeDelegate( LoginDelegate LoginDelegate, Byte LocalUserNum );
		Bool ShowFriendsUI( Byte LocalUserNum );
		Bool IsMuted( Byte LocalUserNum, UniqueNetId PlayerID );
		Bool AreAnyFriends( Byte LocalUserNum, Array<FriendsQuery> Query );
		Bool IsFriend( Byte LocalUserNum, UniqueNetId PlayerID );
		Byte CanShowPresenceInformation( Byte LocalUserNum );
		Byte CanViewPlayerProfiles( Byte LocalUserNum );
		Byte CanPurchaseContent( Byte LocalUserNum );
		Byte CanDownloadUserContent( Byte LocalUserNum );
		Byte CanCommunicate( Byte LocalUserNum );
		Byte CanPlayOnline( Byte LocalUserNum );
		String GetPlayerNickname( Byte LocalUserNum );
		Bool GetUniquePlayerId( Byte LocalUserNum, UniqueNetId PlayerID );
		Byte GetLoginStatus( Byte LocalUserNum );
		void ClearLogoutCompletedDelegate( Byte LocalUserNum, LogoutDelegate LogoutDelegate );
		void AddLogoutCompletedDelegate( Byte LocalUserNum, LogoutDelegate LogoutDelegate );
		void OnLogoutCompleted( Bool bWasSuccessful );
		Bool Logout( Byte LocalUserNum );
		void ClearLoginFailedDelegate( Byte LocalUserNum, LoginDelegate LoginDelegate );
		void AddLoginFailedDelegate( Byte LocalUserNum, LoginDelegate LoginDelegate );
		void OnLoginFailed( Byte LocalUserNum, Byte ErrorCode );
		Bool AutoLogin();
		Bool Login( Byte LocalUserNum, String LoginName, String Password, Bool bWantsLocalOnly );
		Bool ShowLoginUI( Bool bShowOnlineOnly );
		void OnFriendsChange();
		void OnMutingChange();
		void OnLoginCancelled();
		void OnLoginChange();
	};

	class OnlineAccountInterface: public Interface
	{
		DECLARE_PACKAGE_CLASS( OnlineAccountInterface, Interface, Engine )

	public:

		__OnCreateOnlineAccountCompleted__Delegate __OnCreateOnlineAccountCompleted__Delegate; //offset = 60, size = 12

		Bool GetLocalAccountNames( Array<String> Accounts );
		Bool DeleteLocalAccount( String UserName, String Password );
		Bool RenameLocalAccount( String NewUserName, String OldUserName, String Password );
		Bool CreateLocalAccount( String UserName, String Password );
		void ClearCreateOnlineAccountCompletedDelegate( AccountCreateDelegate AccountCreateDelegate );
		void AddCreateOnlineAccountCompletedDelegate( AccountCreateDelegate AccountCreateDelegate );
		void OnCreateOnlineAccountCompleted( Byte ErrorStatus );
		Bool CreateOnlineAccount( String UserName, String Password, String EmailAddress, String ProductKey );
	};

	class EmitterSpawnable: public Emitter
	{
		DECLARE_PACKAGE_CLASS( EmitterSpawnable, Emitter, Engine )

	public:

		ParticleSystem* ParticleTemplate; //offset = 516, size = 4

		void ReplicatedEvent( Name VarName );
		void SetTemplate( ParticleSystem* NewTemplate, Bool bDestroyOnFinish );
	};

	class KAssetSpawnable: public KAsset
	{
		DECLARE_PACKAGE_CLASS( KAssetSpawnable, KAsset, Engine )

	public:
	};

	class SkeletalMeshActorSpawnable: public SkeletalMeshActor
	{
		DECLARE_PACKAGE_CLASS( SkeletalMeshActorSpawnable, SkeletalMeshActor, Engine )

	public:
	};

	class ActorFactorySkeletalMeshMAT: public ActorFactorySkeletalMesh
	{
		DECLARE_PACKAGE_CLASS( ActorFactorySkeletalMeshMAT, ActorFactorySkeletalMesh, Engine )

	public:
	};

	class SeqEvent_Death: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_Death, SequenceEvent, Engine )

	public:
	};

	class SeqAct_ToggleGodMode: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ToggleGodMode, SequenceAction, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_ToggleAffectedByHitEffects: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ToggleAffectedByHitEffects, SequenceAction, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	struct ManualCoverTypeInfo
	{
		Byte SlotIndex; //offset = 0, size = 1
		Byte ManualCoverType; //offset = 1, size = 1
	};

	struct CoverReplicationInfo
	{
		CoverLink* Link; //offset = 0, size = 4
		Array<Byte> SlotsEnabled; //offset = 4, size = 12
		Array<Byte> SlotsDisabled; //offset = 16, size = 12
		Array<Byte> SlotsAdjusted; //offset = 28, size = 12
		Array<ManualCoverTypeInfo> SlotsCoverTypeChanged; //offset = 40, size = 12
	};

	class CoverReplicator: public ReplicationInfo
	{
		DECLARE_PACKAGE_CLASS( CoverReplicator, ReplicationInfo, Engine )

	public:

		Array<CoverReplicationInfo> CoverReplicationData; //offset = 508, size = 12

		void ClientReceiveManualCoverTypeSlots( Int Index, CoverLink* Link, Byte NumCoverTypesChanged, ManualCoverTypeInfo SlotsCoverTypeChanged, Bool bDone, Int I );
		void ServerSendManualCoverTypeSlots( Int Index, Int SlotsArrayIndex, Byte NumCoverTypesChanged, ManualCoverTypeInfo SlotsCoverTypeChanged, Int I, Bool bDone );
		void NotifySetManualCoverTypeForSlots( CoverLink* Link, Array<Int> SlotIndices, Byte NewCoverType, Int Index, Int SlotIndex, Int I, PlayerController* PC );
		void ClientReceiveAdjustedSlots( Int Index, CoverLink* Link, Byte NumSlotsAdjusted, Byte SlotsAdjusted, Bool bDone, Int I );
		void ServerSendAdjustedSlots( Int Index, Int SlotsArrayIndex, Byte NumSlotsAdjusted, Byte SlotsAdjusted, Int I, Bool bDone );
		void NotifyAutoAdjustSlots( CoverLink* Link, Array<Int> SlotIndices, Int Index, Int SlotIndex, Int I, PlayerController* PC );
		void ClientReceiveDisabledSlots( Int Index, CoverLink* Link, Byte NumSlotsDisabled, Byte SlotsDisabled, Bool bDone, Int I );
		void ServerSendDisabledSlots( Int Index, Int SlotsArrayIndex, Byte NumSlotsDisabled, Byte SlotsDisabled, Int I, Bool bDone );
		void NotifyDisabledSlots( CoverLink* Link, Array<Int> SlotIndices, Int Index, Int SlotIndex, Int I, PlayerController* PC );
		void ClientReceiveEnabledSlots( Int Index, CoverLink* Link, Byte NumSlotsEnabled, Byte SlotsEnabled, Bool bDone, Int I );
		void ServerSendEnabledSlots( Int Index, Int SlotsArrayIndex, Byte NumSlotsEnabled, Byte SlotsEnabled, Int I, Bool bDone );
		void NotifyEnabledSlots( CoverLink* Link, Array<Int> SlotIndices, Int Index, Int SlotIndex, Int I, PlayerController* PC );
		void ClientReceiveInitialCoverReplicationInfo( Int Index, CoverLink* Link, Byte NumSlotsEnabled, Byte SlotsEnabled, Byte NumSlotsDisabled, Byte SlotsDisabled, Byte NumSlotsAdjusted, Byte SlotsAdjusted, Byte NumCoverTypesChanged, ManualCoverTypeInfo SlotsCoverTypeChanged, Bool bDone, Int I );
		void ServerSendInitialCoverReplicationInfo( Int Index, Byte SlotsArrayIndex, Byte NumSlotsEnabled, Byte NumSlotsDisabled, Byte NumSlotsAdjusted, Byte NumCoverTypesChanged, Byte SlotsEnabled, Byte SlotsDisabled, Byte SlotsAdjusted, ManualCoverTypeInfo SlotsCoverTypeChanged, Int I, Bool bDone );
		void ReplicateInitialCoverInfo( CoverReplicator* CoverReplicatorBase );
		void PurgeOldEntries( Int I );
	};

	class DebugCameraController: public PlayerController
	{
		DECLARE_PACKAGE_CLASS( DebugCameraController, PlayerController, Engine )

	public:

		PlayerController* OryginalControllerRef; //offset = 1400, size = 4
		Player* OryginalPlayer; //offset = 1404, size = 4
		Bool bIsFrozenRendering: 1; //offset = 1408, size = 4
		DrawFrustumComponent* DrawFrustum; //offset = 1412, size = 4

		void DisableDebugCamera();
		void NormalSpeed();
		void MoreSpeed();
		void SetFreezeRendering();
		void OnDeactivate( PlayerController* PC );
		void OnActivate( PlayerController* PC );
		void PostBeginPlay();
	};

	class GameMessage: public LocalMessage
	{
		DECLARE_PACKAGE_CLASS( GameMessage, LocalMessage, Engine )

	public:

		String SwitchLevelMessage; //offset = 80, size = 12
		String LeftMessage; //offset = 92, size = 12
		String FailedTeamMessage; //offset = 104, size = 12
		String FailedPlaceMessage; //offset = 116, size = 12
		String FailedSpawnMessage; //offset = 128, size = 12
		String EnteredMessage; //offset = 140, size = 12
		String MaxedOutMessage; //offset = 152, size = 12
		String ArbitrationMessage; //offset = 164, size = 12
		String OvertimeMessage; //offset = 176, size = 12
		String GlobalNameChange; //offset = 188, size = 12
		String NewTeamMessage; //offset = 200, size = 12
		String NewTeamMessageTrailer; //offset = 212, size = 12
		String NoNameChange; //offset = 224, size = 12
		String VoteStarted; //offset = 236, size = 12
		String VotePassed; //offset = 248, size = 12
		String MustHaveStats; //offset = 260, size = 12
		String CantBeSpectator; //offset = 272, size = 12
		String CantBePlayer; //offset = 284, size = 12
		String BecameSpectator; //offset = 296, size = 12
		String NewPlayerMessage; //offset = 308, size = 12
		String KickWarning; //offset = 320, size = 12
		String NewSpecMessage; //offset = 332, size = 12
		String SpecEnteredMessage; //offset = 344, size = 12

		String GetString( Int Switch, Bool bPRI1HUD, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject );
	};

	class ScoreBoard: public HUD
	{
		DECLARE_PACKAGE_CLASS( ScoreBoard, HUD, Engine )

	public:

		Bool bDisplayMessages: 1; //offset = 1152, size = 4

		void ChangeState( Bool bIsVisible );
		void UpdateScoreBoard();
		Bool UpdateGRI();
		void DrawHUD();
	};

	class DmgType_Suicided: public KillZDamageType
	{
		DECLARE_PACKAGE_CLASS( DmgType_Suicided, KillZDamageType, Engine )

	public:
	};

	class SeqAct_ToggleInput: public SeqAct_Toggle
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ToggleInput, SeqAct_Toggle, Engine )

	public:

		Bool bToggleMovement: 1; //offset = 240, size = 4
		Bool bToggleTurning: 1; //offset = 240, size = 4

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_ForceFeedback: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ForceFeedback, SequenceAction, Engine )

	public:

		ForceFeedbackWaveform* FFWaveform; //offset = 240, size = 4
	};

	class SeqAct_ToggleCinematicMode: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ToggleCinematicMode, SequenceAction, Engine )

	public:

		Bool bDisableMovement: 1; //offset = 240, size = 4
		Bool bDisableTurning: 1; //offset = 240, size = 4
		Bool bHidePlayer: 1; //offset = 240, size = 4
		Bool bDisableInput: 1; //offset = 240, size = 4
		Bool bHideHUD: 1; //offset = 240, size = 4

		void Activated();
		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class SeqAct_ConsoleCommand: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ConsoleCommand, SequenceAction, Engine )

	public:

		String Command; //offset = 240, size = 12
	};

	class AmbientSoundSimpleToggleable: public AmbientSoundSimple
	{
		DECLARE_PACKAGE_CLASS( AmbientSoundSimpleToggleable, AmbientSoundSimple, Engine )

	public:

		Bool bCurrentlyPlaying: 1; //offset = 536, size = 4
		Bool bFadeOnToggle: 1; //offset = 536, size = 4
		Float FadeInDuration; //offset = 540, size = 4
		Float FadeInVolumeLevel; //offset = 544, size = 4
		Float FadeOutDuration; //offset = 548, size = 4
		Float FadeOutVolumeLevel; //offset = 552, size = 4

		void OnToggle( SeqAct_Toggle* Action );
		void StopPlaying();
		void StartPlaying();
		void ReplicatedEvent( Name VarName );
		void PostBeginPlay();
	};

	class AnimNotify_PlayFaceFXAnim: public AnimNotify_Scripted
	{
		DECLARE_PACKAGE_CLASS( AnimNotify_PlayFaceFXAnim, AnimNotify_Scripted, Engine )

	public:

		FaceFXAnimSet* FaceFXAnimSetRef; //offset = 60, size = 4
		String GroupName; //offset = 64, size = 12
		String AnimName; //offset = 76, size = 12
		Bool bOverridePlayingAnim: 1; //offset = 88, size = 4
		Float PlayFrequency; //offset = 92, size = 4

		void Notify( Actor* Owner, AnimNodeSequence* AnimSeqInstigator );
	};

	class AnimNotify_ViewShake: public AnimNotify_Scripted
	{
		DECLARE_PACKAGE_CLASS( AnimNotify_ViewShake, AnimNotify_Scripted, Engine )

	public:

		Float ShakeRadius; //offset = 60, size = 4
		Float Duration; //offset = 64, size = 4
		Vector RotAmplitude; //offset = 68, size = 12
		Vector RotFrequency; //offset = 80, size = 12
		Vector LocAmplitude; //offset = 92, size = 12
		Vector LocFrequency; //offset = 104, size = 12
		Float FOVAmplitude; //offset = 116, size = 4
		Float FOVFrequency; //offset = 120, size = 4
		Bool bUseBoneLocation: 1; //offset = 124, size = 4
		Name BoneName; //offset = 128, size = 8

		void Notify( Actor* Owner, AnimNodeSequence* AnimSeqInstigator, PlayerController* PC, Float Pct, Float DistToOrigin, Vector ViewShakeOrigin, Vector CamLoc, Rotator CamRot );
	};

	class BioBlockingVolume: public BlockingVolume
	{
		DECLARE_PACKAGE_CLASS( BioBlockingVolume, BlockingVolume, Engine )

	public:
	};

	class BioCoverInterface: public Object
	{
		DECLARE_PACKAGE_CLASS( BioCoverInterface, Object, Engine )

	public:
	};

	class BioLightEnvironmentComponent: public DynamicLightEnvironmentComponent
	{
		DECLARE_PACKAGE_CLASS( BioLightEnvironmentComponent, DynamicLightEnvironmentComponent, Engine )

	public:
	};

	class BioSeqAct_EffectsMaterial: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( BioSeqAct_EffectsMaterial, SequenceAction, Engine )

	public:

		Name InputTypeValue; //offset = 240, size = 8
		Float InputAlphaValue; //offset = 248, size = 4
		Bool NeedToSetType: 1; //offset = 252, size = 4
		Bool NeedToSetAlpha: 1; //offset = 252, size = 4
		Name TypeName; //offset = 256, size = 8
		Float AlphaValue; //offset = 264, size = 4

		void Activated( Int N, Actor* oTarget, MeshComponent* oComp, Name nmNewType, Float fNewAlpha );
		void SetUpInputs();
	};

	class BioSeqAct_SetProximityRange: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( BioSeqAct_SetProximityRange, SequenceAction, Engine )

	public:
	};

	class BioSeqEvt_HearNoise: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( BioSeqEvt_HearNoise, SequenceEvent, Engine )

	public:
	};

	class BioSeqEvt_ProximityAlarm: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( BioSeqEvt_ProximityAlarm, SequenceEvent, Engine )

	public:
	};

	class BroadcastHandler: public Info
	{
		DECLARE_PACKAGE_CLASS( BroadcastHandler, Info, Engine )

	public:

		Int SentText; //offset = 508, size = 4
		Bool bMuteSpectators: 1; //offset = 512, size = 4

		void AllowBroadcastLocalizedTeam( Int TeamIndex, Actor* Sender, Class* Message, Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject, PlayerController* P );
		void AllowBroadcastLocalized( Actor* Sender, Class* Message, Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject, PlayerController* P );
		void BroadcastTeam( Controller* Sender, String msg, Name Type, PlayerController* P );
		void Broadcast( Actor* Sender, String msg, Name Type, PlayerController* P, PlayerReplicationInfo* PRI );
		void BroadcastLocalized( Actor* Sender, PlayerController* Receiver, Class* Message, Int Switch, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject );
		void BroadcastText( PlayerReplicationInfo* SenderPRI, PlayerController* Receiver, String msg, Name Type );
		Bool AllowsBroadcast( Actor* broadcaster, Int InLen );
		void UpdateSentText();
	};

	class ColorScaleVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( ColorScaleVolume, Volume, Engine )

	public:

		Vector ColorScale; //offset = 568, size = 12
		Float InterpTime; //offset = 580, size = 4

		void UnTouch( Actor* Other, Pawn* P, PlayerController* PC, Vector DesiredColorScale, Float DesiredInterpTime, ColorScaleVolume* CSV );
		void Touch( Actor* Other, PrimitiveComponent* OtherComp, Vector HitLocation, Vector HitNormal, Pawn* P, PlayerController* PC );
	};

	class UIAction_ChangeVisibility: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ChangeVisibility, UIAction, Engine )

	public:

		Bool bVisible: 1; //offset = 248, size = 4
	};

	class UIAction_ConsoleCommand: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ConsoleCommand, UIAction, Engine )

	public:

		String Command; //offset = 248, size = 12
	};

	class UIAction_ShowFriendsUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowFriendsUI, UIAction, Engine )

	public:
	};

	class UIAction_ShowPlayersUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowPlayersUI, UIAction, Engine )

	public:
	};

	class UIAction_ShowAchievementsUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowAchievementsUI, UIAction, Engine )

	public:
	};

	class UIAction_ShowFriendInviteUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowFriendInviteUI, UIAction, Engine )

	public:
	};

	class UIAction_ShowMessagesUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowMessagesUI, UIAction, Engine )

	public:
	};

	class UIAction_ShowFeedbackUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowFeedbackUI, UIAction, Engine )

	public:
	};

	class UIAction_ShowGamerCardUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowGamerCardUI, UIAction, Engine )

	public:
	};

	class UIAction_ShowContentMarketplaceUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowContentMarketplaceUI, UIAction, Engine )

	public:
	};

	class UIAction_ShowMembershipMarketplaceUI: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ShowMembershipMarketplaceUI, UIAction, Engine )

	public:
	};

	class UIEvent_Initialized: public UIEvent
	{
		DECLARE_PACKAGE_CLASS( UIEvent_Initialized, UIEvent, Engine )

	public:
	};

	class UIAction_SetValue: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_SetValue, UIAction, Engine )

	public:
	};

	class UIAction_SetLabelText: public UIAction_SetValue
	{
		DECLARE_PACKAGE_CLASS( UIAction_SetLabelText, UIAction_SetValue, Engine )

	public:

		String NewText; //offset = 248, size = 12
	};

	class UIAction_GetTextValue: public UIAction_GetValue
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetTextValue, UIAction_GetValue, Engine )

	public:

		String StringValue; //offset = 248, size = 12
	};

	class SeqAct_ModifyCover: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ModifyCover, SequenceAction, Engine )

	public:

		Array<Int> Slots; //offset = 240, size = 12
		Byte ManualCoverType; //offset = 252, size = 1
	};

	class DebugCameraHUD: public HUD
	{
		DECLARE_PACKAGE_CLASS( DebugCameraHUD, HUD, Engine )

	public:

		void PostRender( DebugCameraController* DCC, Float XL, Float YL, Float Y, String myText, Vector CamLoc, Vector ZeroVec, Rotator CamRot, TraceHitInfo HitInfo, Actor* HitActor, Vector HitLoc, Vector HitNormal );
		void PostBeginPlay();
	};

	class DebugCameraInput: public PlayerInput
	{
		DECLARE_PACKAGE_CLASS( DebugCameraInput, PlayerInput, Engine )

	public:
	};

	class DecalLifetime: public Object
	{
		DECLARE_PACKAGE_CLASS( DecalLifetime, Object, Engine )

	public:
	};

	class DecalLifetimeAge: public DecalLifetime
	{
		DECLARE_PACKAGE_CLASS( DecalLifetimeAge, DecalLifetime, Engine )

	public:
	};

	class VolumeTimer: public Info
	{
		DECLARE_PACKAGE_CLASS( VolumeTimer, Info, Engine )

	public:

		PhysicsVolume* V; //offset = 508, size = 4

		void Timer();
		void PostBeginPlay();
	};

	class SeqAct_SetDamageInstigator: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetDamageInstigator, SequenceAction, Engine )

	public:

		Actor* DamageInstigator; //offset = 240, size = 4
	};

	class DialogueManager: public Actor
	{
		DECLARE_PACKAGE_CLASS( DialogueManager, Actor, Engine )

	public:

		Bool TriggerDialogueEvent( Class* InEventClass, Actor* InInstigator, Actor* InOriginator );
	};

	class DmgType_Crushed: public DamageType
	{
		DECLARE_PACKAGE_CLASS( DmgType_Crushed, DamageType, Engine )

	public:
	};

	class DmgType_Fell: public DamageType
	{
		DECLARE_PACKAGE_CLASS( DmgType_Fell, DamageType, Engine )

	public:
	};

	class DmgType_Telefragged: public DamageType
	{
		DECLARE_PACKAGE_CLASS( DmgType_Telefragged, DamageType, Engine )

	public:
	};

	class DynamicPhysicsVolume: public PhysicsVolume
	{
		DECLARE_PACKAGE_CLASS( DynamicPhysicsVolume, PhysicsVolume, Engine )

	public:
	};

	class SeqAct_SetStaticMesh: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetStaticMesh, SequenceAction, Engine )

	public:

		StaticMesh* NewStaticMesh; //offset = 240, size = 4
	};

	class DynamicSMActor_Spawnable: public DynamicSMActor
	{
		DECLARE_PACKAGE_CLASS( DynamicSMActor_Spawnable, DynamicSMActor, Engine )

	public:
	};

	class DynamicTriggerVolume: public TriggerVolume
	{
		DECLARE_PACKAGE_CLASS( DynamicTriggerVolume, TriggerVolume, Engine )

	public:
	};

	class SeqAct_SetParticleSysParam: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetParticleSysParam, SequenceAction, Engine )

	public:

		Array<ParticleSysParam> InstanceParameters; //offset = 240, size = 12
		Bool bOverrideScalar: 1; //offset = 252, size = 4
		Float ScalarValue; //offset = 256, size = 4
	};

	class FailedConnect: public LocalMessage
	{
		DECLARE_PACKAGE_CLASS( FailedConnect, LocalMessage, Engine )

	public:

		String FailMessage[4]; //offset = 80, size = 12

		String GetString( Int Switch, Bool bPRI1HUD, PlayerReplicationInfo* RelatedPRI, PlayerReplicationInfo* RelatedPRI, Object* OptionalObject );
		Int GetFailSwitch( String FailString );
	};

	class GameRules: public Info
	{
		DECLARE_PACKAGE_CLASS( GameRules, Info, Engine )

	public:

		GameRules* NextGameRules; //offset = 508, size = 4

		void NetDamage( Int OriginalDamage, Int Damage, Pawn* injured, Controller* InstigatedBy, Vector HitLocation, Vector Momentum, Class* DamageType );
		void ScoreKill( Controller* Killer, Controller* Killed );
		void ScoreObjective( PlayerReplicationInfo* Scorer, Int Score );
		Bool PreventDeath( Pawn* Killed, Controller* Killer, Class* DamageType, Vector HitLocation );
		Bool OverridePickupQuery( Pawn* Other, Class* ItemClass, Actor* Pickup, Byte bAllowPickup );
		Bool CheckEndGame( PlayerReplicationInfo* Winner, String Reason );
		Bool HandleRestartGame();
		String GetRules(, String ResultSet );
		NavigationPoint* FindPlayerStart( Controller* Player, Byte InTeam, String IncomingName );
		void AddGameRules( GameRules* GR );
	};

	class SeqEvent_LevelReset: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_LevelReset, SequenceEvent, Engine )

	public:
	};

	class SeqEvent_PlayerSpawned: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_PlayerSpawned, SequenceEvent, Engine )

	public:

		Object* SpawnPoint; //offset = 280, size = 4
	};

	class HeightFog: public Info
	{
		DECLARE_PACKAGE_CLASS( HeightFog, Info, Engine )

	public:

		HeightFogComponent* Component; //offset = 508, size = 4
		Bool bEnabled: 1; //offset = 512, size = 4

		void OnToggle( SeqAct_Toggle* Action );
		void ReplicatedEvent( Name VarName );
		void PostBeginPlay();
	};

	class SeqAct_AssignController: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_AssignController, SequenceAction, Engine )

	public:

		Class* ControllerClass; //offset = 240, size = 4
	};

	class SeqAct_GiveInventory: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_GiveInventory, SequenceAction, Engine )

	public:

		Array<Class*> InventoryList; //offset = 240, size = 12
		Bool bClearExisting: 1; //offset = 252, size = 4
	};

	class SeqEvent_PickupStatusChange: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_PickupStatusChange, SequenceEvent, Engine )

	public:
	};

	class RB_BSJointActor: public RB_ConstraintActor
	{
		DECLARE_PACKAGE_CLASS( RB_BSJointActor, RB_ConstraintActor, Engine )

	public:
	};

	class RB_ConstraintActorSpawnable: public RB_ConstraintActor
	{
		DECLARE_PACKAGE_CLASS( RB_ConstraintActorSpawnable, RB_ConstraintActor, Engine )

	public:
	};

	class RB_HingeActor: public RB_ConstraintActor
	{
		DECLARE_PACKAGE_CLASS( RB_HingeActor, RB_ConstraintActor, Engine )

	public:
	};

	class RB_PrismaticActor: public RB_ConstraintActor
	{
		DECLARE_PACKAGE_CLASS( RB_PrismaticActor, RB_ConstraintActor, Engine )

	public:
	};

	class RB_PulleyJointActor: public RB_ConstraintActor
	{
		DECLARE_PACKAGE_CLASS( RB_PulleyJointActor, RB_ConstraintActor, Engine )

	public:
	};

	const char* ConsolePromptText = "(>;

	class ScriptConsoleEntry: public UIPanel
	{
		DECLARE_PACKAGE_CLASS( ScriptConsoleEntry, UIPanel, Engine )

	public:

		UIEditBox* InputBox; //offset = 1000, size = 4
		UIImage* UpperConsoleBorder; //offset = 1004, size = 4
		UIImage* LowerConsoleBorder; //offset = 1008, size = 4

		void OnCreateChild( UIObject* CreatedWidget, UIScreenObject* CreatorContainer );
		void SetValue( String NewValue );
		void PostInitialize();
		void Initialized();
	};

	class SeqAct_AIAbortMoveToActor: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_AIAbortMoveToActor, SequenceAction, Engine )

	public:
	};

	class SeqAct_ControlMovieTexture: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_ControlMovieTexture, SequenceAction, Engine )

	public:

		TextureMovie* MovieTexture; //offset = 240, size = 4

		void Activated();
	};

	class SeqAct_SetName: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetName, SeqAct_SetSequenceVariable, Engine )

	public:

		Name Target; //offset = 240, size = 8
		Name Value; //offset = 248, size = 8

		void Activated();
	};

	class SeqAct_SetSkeletalMesh: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetSkeletalMesh, SequenceAction, Engine )

	public:

		SkeletalMesh* NewSkeletalMesh; //offset = 240, size = 4
	};

	class SeqAct_SetVector: public SeqAct_SetSequenceVariable
	{
		DECLARE_PACKAGE_CLASS( SeqAct_SetVector, SeqAct_SetSequenceVariable, Engine )

	public:

		Vector DefaultValue; //offset = 240, size = 12

		void Activated( Bool bIgnoreDefault, SeqVar_Vector* VectVar, Vector Value );
	};

	class SeqAct_UpdateDynamicCover: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_UpdateDynamicCover, SequenceAction, Engine )

	public:
	};

	class SeqEvent_LOS: public SequenceEvent
	{
		DECLARE_PACKAGE_CLASS( SeqEvent_LOS, SequenceEvent, Engine )

	public:

		Float ScreenCenterDistance; //offset = 280, size = 4
		Float TriggerDistance; //offset = 284, size = 4
		Bool bCheckForObstructions: 1; //offset = 288, size = 4
	};

	class UISettingsClient: public Interface
	{
		DECLARE_PACKAGE_CLASS( UISettingsClient, Interface, Engine )

	public:
	};

	class SessionSettingsProvider_GameInfo: public SessionSettingsProvider
	{
		DECLARE_PACKAGE_CLASS( SessionSettingsProvider_GameInfo, SessionSettingsProvider, Engine )

	public:
	};

	class SFXClimbUpMarker: public NavigationPoint
	{
		DECLARE_PACKAGE_CLASS( SFXClimbUpMarker, NavigationPoint, Engine )

	public:
	};

	class SFXClimbUpReachSpec: public ForcedReachSpec
	{
		DECLARE_PACKAGE_CLASS( SFXClimbUpReachSpec, ForcedReachSpec, Engine )

	public:
	};

	class SkeletalMeshActorMATSpawnable: public SkeletalMeshActorMAT
	{
		DECLARE_PACKAGE_CLASS( SkeletalMeshActorMATSpawnable, SkeletalMeshActorMAT, Engine )

	public:
	};

	class TargetPoint: public Keypoint
	{
		DECLARE_PACKAGE_CLASS( TargetPoint, Keypoint, Engine )

	public:
	};

	class Trigger_Dynamic: public Trigger
	{
		DECLARE_PACKAGE_CLASS( Trigger_Dynamic, Trigger, Engine )

	public:
	};

	class Trigger_LOS: public Trigger
	{
		DECLARE_PACKAGE_CLASS( Trigger_LOS, Trigger, Engine )

	public:

		void Tick( Float DeltaTime, Array<SequenceEvent*> losEvents, SeqEvent_LOS* evt, PlayerController* Player, Int idx, Vector cameraLoc, Rotator cameraRot, Float cameraDist );
	};

	struct LevelStreamingData
	{
		Bool bShouldBeLoaded: 1; //offset = 0, size = 4
		Bool bShouldBeVisible: 1; //offset = 0, size = 4
		Bool bShouldBlockOnLoad: 1; //offset = 0, size = 4
		LevelStreaming* Level; //offset = 4, size = 4
	};

	class TriggerStreamingLevel: public Trigger
	{
		DECLARE_PACKAGE_CLASS( TriggerStreamingLevel, Trigger, Engine )

	public:

		Array<LevelStreamingData> Levels; //offset = 520, size = 12

		void Touch( Actor* Other, PrimitiveComponent* OtherComp, Vector HitLocation, Vector HitNormal, PlayerController* PlayerCon, Int Index );
	};

	class UIAction_TabControl: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_TabControl, UIAction, Engine )

	public:

		UITabControl* TabControl; //offset = 248, size = 4
	};

	class UIAction_ActivatePage: public UIAction_TabControl
	{
		DECLARE_PACKAGE_CLASS( UIAction_ActivatePage, UIAction_TabControl, Engine )

	public:

		UITabPage* PageToActivate; //offset = 252, size = 4
		Bool bActivate: 1; //offset = 256, size = 4

		void Activated();
	};

	class UIAction_ApplyScrolling: public UIAction
	{
		DECLARE_PACKAGE_CLASS( UIAction_ApplyScrolling, UIAction, Engine )

	public:

		Byte ScrollOrientation; //offset = 248, size = 1
		Bool bIncreaseScroll: 1; //offset = 252, size = 4
		Bool bFullPage: 1; //offset = 252, size = 4
	};

	class UIAction_EnablePage: public UIAction_TabControl
	{
		DECLARE_PACKAGE_CLASS( UIAction_EnablePage, UIAction_TabControl, Engine )

	public:

		UITabPage* PageToEnable; //offset = 252, size = 4
		Bool bEnable: 1; //offset = 256, size = 4

		void Activated();
	};

	class UIAction_GetPageReference: public UIAction_TabControl
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetPageReference, UIAction_TabControl, Engine )

	public:

		UITabPage* PageReference; //offset = 252, size = 4
		Int PageIndex; //offset = 256, size = 4

		void Activated();
	};

	class UIAction_FindPageByCaption: public UIAction_GetPageReference
	{
		DECLARE_PACKAGE_CLASS( UIAction_FindPageByCaption, UIAction_GetPageReference, Engine )

	public:

		String SearchCaption; //offset = 260, size = 12
		Bool bMarkupString: 1; //offset = 272, size = 4

		void Activated( Int SearchIndex );
	};

	class UIAction_FindPageByIndex: public UIAction_GetPageReference
	{
		DECLARE_PACKAGE_CLASS( UIAction_FindPageByIndex, UIAction_GetPageReference, Engine )

	public:

		Int SearchIndex; //offset = 260, size = 4

		void Activated();
	};

	class UIAction_GetActivePage: public UIAction_GetPageReference
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetActivePage, UIAction_GetPageReference, Engine )

	public:

		void Activated();
	};

	class UIAction_GetPageCount: public UIAction_TabControl
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetPageCount, UIAction_TabControl, Engine )

	public:

		void Activated( Int PageCount, SeqVar_Int* IntVar, Bool bSuccess );
	};

	class UIAction_GetProgressBarValue: public UIAction_GetValue
	{
		DECLARE_PACKAGE_CLASS( UIAction_GetProgressBarValue, UIAction_GetValue, Engine )

	public:

		Float Value; //offset = 248, size = 4
		Bool bPercentageValue: 1; //offset = 252, size = 4
	};

	class UIAction_InsertPage: public UIAction_TabControl
	{
		DECLARE_PACKAGE_CLASS( UIAction_InsertPage, UIAction_TabControl, Engine )

	public:

		Class* TabPageClass; //offset = 252, size = 4
		Int InsertIndex; //offset = 256, size = 4
		Bool bFocusPage: 1; //offset = 260, size = 4
		UITabPage* PageToInsert; //offset = 264, size = 4
		UITabPage* PagePrefab; //offset = 268, size = 4

		void Activated( Bool bSuccess, UITabPage* NewPage, SeqVar_Object* ObjVar );
	};

	class UIAction_PlaySound: public SeqAct_PlaySound
	{
		DECLARE_PACKAGE_CLASS( UIAction_PlaySound, SeqAct_PlaySound, Engine )

	public:

		Bool IsValidUISequenceObject( UIScreenObject* TargetObject );
	};

	class UIAction_RemovePage: public UIAction_TabControl
	{
		DECLARE_PACKAGE_CLASS( UIAction_RemovePage, UIAction_TabControl, Engine )

	public:

		UITabPage* PageToRemove; //offset = 252, size = 4

		void Activated();
	};

	class UIAction_ReplacePage: public UIAction_TabControl
	{
		DECLARE_PACKAGE_CLASS( UIAction_ReplacePage, UIAction_TabControl, Engine )

	public:

		Class* TabPageClass; //offset = 252, size = 4
		UITabPage* PageToRemove; //offset = 256, size = 4
		Bool bFocusPage: 1; //offset = 260, size = 4
		UITabPage* PageToInsert; //offset = 264, size = 4
		UITabPage* PagePrefab; //offset = 268, size = 4

		void Activated( Bool bSuccess, UITabPage* NewPage, SeqVar_Object* ObjVar );
	};

	class UIAction_SetBoolValue: public UIAction_SetValue
	{
		DECLARE_PACKAGE_CLASS( UIAction_SetBoolValue, UIAction_SetValue, Engine )

	public:

		Bool bNewValue: 1; //offset = 248, size = 4
	};

	class UIAction_SetListIndex: public UIAction_SetValue
	{
		DECLARE_PACKAGE_CLASS( UIAction_SetListIndex, UIAction_SetValue, Engine )

	public:

		Int NewIndex; //offset = 248, size = 4
		Bool bClampInvalidValues: 1; //offset = 252, size = 4
		Bool bActivateListChangeEvent: 1; //offset = 252, size = 4
	};

	class UIAction_SetProgressBarValue: public UIAction_SetValue
	{
		DECLARE_PACKAGE_CLASS( UIAction_SetProgressBarValue, UIAction_SetValue, Engine )

	public:

		Float NewValue; //offset = 248, size = 4
		Bool bPercentageValue: 1; //offset = 252, size = 4
	};

	class UICond_SwitchWidget: public SeqCond_SwitchObject
	{
		DECLARE_PACKAGE_CLASS( UICond_SwitchWidget, SeqCond_SwitchObject, Engine )

	public:

		Bool IsValidLevelSequenceObject();
	};

	class UIEvent_SceneActivated: public UIEvent_Scene
	{
		DECLARE_PACKAGE_CLASS( UIEvent_SceneActivated, UIEvent_Scene, Engine )

	public:

		Bool bInitialActivation: 1; //offset = 316, size = 4

		void Deactivated( Int I, UIScene* OwnerScene );
	};

	class UIEvent_SceneDeactivated: public UIEvent_Scene
	{
		DECLARE_PACKAGE_CLASS( UIEvent_SceneDeactivated, UIEvent_Scene, Engine )

	public:
	};

	class UIEvent_TabPageActivated: public UIEvent_TabControl
	{
		DECLARE_PACKAGE_CLASS( UIEvent_TabPageActivated, UIEvent_TabControl, Engine )

	public:
	};

	class UIEvent_TabPageEnabled: public UIEvent_TabControl
	{
		DECLARE_PACKAGE_CLASS( UIEvent_TabPageEnabled, UIEvent_TabControl, Engine )

	public:
	};

	class UIEvent_TabPageInserted: public UIEvent_TabControl
	{
		DECLARE_PACKAGE_CLASS( UIEvent_TabPageInserted, UIEvent_TabControl, Engine )

	public:

		Int InsertedIndex; //offset = 320, size = 4
	};

	class UIEvent_TabPageRemoved: public UIEvent_TabControl
	{
		DECLARE_PACKAGE_CLASS( UIEvent_TabPageRemoved, UIEvent_TabControl, Engine )

	public:
	};

	class UIGameInfoSummary: public UIResourceDataProvider
	{
		DECLARE_PACKAGE_CLASS( UIGameInfoSummary, UIResourceDataProvider, Engine )

	public:

		String ClassName; //offset = 104, size = 12
		String GameAcronym; //offset = 116, size = 12
		String MapPrefix; //offset = 128, size = 12
		Bool bIsTeamGame: 1; //offset = 140, size = 4
		Bool bIsDisabled: 1; //offset = 140, size = 4
		String GameName; //offset = 144, size = 12
		String Description; //offset = 156, size = 12

		Bool IsProviderDisabled();
	};

	class UIScriptConsoleScene: public UIScene
	{
		DECLARE_PACKAGE_CLASS( UIScriptConsoleScene, UIScene, Engine )

	public:

		UILabel* BufferText; //offset = 544, size = 4
		UIImage* BufferBackground; //offset = 548, size = 4
		ScriptConsoleEntry* CommandRegion; //offset = 552, size = 4

		void OnCreateChild( UIObject* CreatedWidget, UIScreenObject* CreatorContainer );
		void PostInitialize();
		void Initialized();
	};

	class WaterVolume: public PhysicsVolume
	{
		DECLARE_PACKAGE_CLASS( WaterVolume, PhysicsVolume, Engine )

	public:

		SoundCue* EntrySound; //offset = 628, size = 4
		SoundCue* ExitSound; //offset = 632, size = 4
		Class* EntryActor; //offset = 636, size = 4
		Class* ExitActor; //offset = 640, size = 4
		Class* PawnEntryActor; //offset = 644, size = 4

		void PlayExitSplash( Actor* Other );
		void UnTouch( Actor* Other );
		void PlayEntrySplash( Actor* Other );
		void Touch( Actor* Other, PrimitiveComponent* OtherComp, Vector HitLocation, Vector HitNormal );
	};

	class WindDirectionalSource: public Info
	{
		DECLARE_PACKAGE_CLASS( WindDirectionalSource, Info, Engine )

	public:

		WindDirectionalSourceComponent* Component; //offset = 508, size = 4
	};
}

#endif
